是否有一个选项来解析在Visual-Studio模式比较中进行比较的SQLCMD变量?

时间:2012-11-14 09:06:36

标签: database-project schema-compare

看起来Visual Studio Database Project不解析SQLCMD - 进行模式比较的变量。

我的所有同义词都是

CREATE SYNONYM [dbo].[addressesExtDB] FOR [$(ExtDB)].[dbo].[addresses];

但是它们会被报告为与数据库不同。

当我使用正确的'Specify SQLCMD Variabeles...' - 设置进行架构更新时,其中var ExtDB设置为'ExtDBnn',数据库中生成的Synonym被正确设置为:

CREATE SYNONYM [dbo].[addressesExtDB] FOR [ExtDBnn].[dbo].[addresses];

重新比较操作会再次将所有同义词错误地显示为不同。 因此比较应该解析sqlcmd-variabeles并使用结果与数据库进行比较。 我是否会错过这样做的选项,或者您是否遇到过同样的问题并找到了某种解决方案?

2 个答案:

答案 0 :(得分:0)

不,变量根本不会传递给VS中的模式比较(您可以通过例如将自己的贡献者添加到项目中来验证这一点)。

有趣的是,即使使用SqlPackage.exe,变量也只传递给源,而不是传递给目标。

当面对这个时,我结束了做数据库名称 - >从数据库中获取的.dacpac文件中的变量替换 - 一切都以这种方式工作,即使它非常糟糕。

答案 1 :(得分:-1)

在项目设置中设置变量的默认值。然后SchemaCompare会假设它们是相等的。

SQLCMD VARIABLES

Schema-Compare without sqlcmd variable Default

Schema-Compare with sqlcmd variable Default

如果这不是你所得到的,你可以告诉我并提供一些澄清吗?干杯