6

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

我所有的同义词看起来像

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

但它们一直被报告为与数据库不同。

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

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

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

4

2 回答 2

0

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

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

面对这种情况,我结束了在从数据库中获取的 .dacpac 文件中进行数据库名称 -> 变量替换 - 一切都以这种方式工作,即使它是一个相当黑客。

于 2014-12-08T17:14:20.437 回答
-1

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

SQLCMD 变量

没有 sqlcmd 变量的模式比较默认值

Schema-与 sqlcmd 变量默认比较

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

于 2016-09-12T13:44:04.140 回答