0

我正在使用 vs2013 数据工具并尝试在不同环境中比较我的数据库项目和数据库。

但是我的 tsql 代码使用同义词来访问不同的数据库

我可以使用发布文件进行设置,因为我可以将每个 SQLCMD 变量设置为正确的环境设置,并且在生成脚本时插入正确的 db/server/whatever。

例如

DEV   $(Contoso)  = "Contoso_dev"
TEST  $(Contoso)  = "Contoso_Test"
PROD  $(Contoso)  = "Contoso_Prod"

但是,当我进行数据库比较(使用 .scmp)时,我没有设置 CMDvars 的选项,因此我无法成功与 TEST 环境进行比较,因为同义词是由指向开发环境的项目属性设置的。

无论如何要在 SCMP 文件中设置 CMDVars

4

2 回答 2

2

使用 VS2015 和 SSDT 14.0.51215.0(2015 年 12 月)重新审视了这个问题。(不确定这是否适用于上面列出的原始配置)

通过设置 cmd 变量的 LOCAL 值,它会正确替换 cmd 变量(无论您正在查看什么数据库服务器)

(这不起作用,只有默认设置)

在此处输入图像描述

于 2016-02-10T00:35:20.200 回答
1

在当前 SSDT 版本中,无法在模式比较中使用 SQLCMD 变量。但是有一种解决方法:只需使用正确的 SQLCMD 变量调试您的数据库 (F5),并将生成的暂存数据库与目标数据库进行比较。

希望这可以帮助。

于 2014-09-18T13:28:03.697 回答