无论如何在Visual Studio架构比较中设置SQLCMD变量

时间:2014-09-18 00:20:48

标签: visual-studio-2013 sql-server-data-tools schema-compare

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

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

我可以使用发布文件进行设置,因为我可以将每个SQLCMD变量设置为正确的环境设置,并在生成脚本时生成正确的数据库/服务器/插入的任何内容。

例如

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

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

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

2 个答案:

答案 0 :(得分:2)

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

通过设置cmd变量的LOCAL值,它会正确替换cmd变量(无论您正在查看哪个DB服务器)

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

enter image description here

答案 1 :(得分:1)

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

希望这有帮助。