看起来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并使用结果与数据库进行比较。 我是否会错过这样做的选项,或者您是否遇到过同样的问题并找到了某种解决方案?
答案 0 :(得分:0)
不,变量根本不会传递给VS中的模式比较(您可以通过例如将自己的贡献者添加到项目中来验证这一点)。
有趣的是,即使使用SqlPackage.exe,变量也只传递给源,而不是传递给目标。
当面对这个时,我结束了做数据库名称 - >从数据库中获取的.dacpac文件中的变量替换 - 一切都以这种方式工作,即使它非常糟糕。
答案 1 :(得分:-1)
在项目设置中设置变量的默认值。然后SchemaCompare会假设它们是相等的。
Schema-Compare without sqlcmd variable Default
Schema-Compare with sqlcmd variable Default
如果这不是你所得到的,你可以告诉我并提供一些澄清吗?干杯