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

Pet*_*ter 6 database-project schema-compare

看起来好像Visual Studio Database Project没有解析SQLCMD变量进行模式比较.

我所有的同义词都是这样的

CREATE SYNONYM [dbo].[addressesExtDB] FOR [$(ExtDB)].[dbo].[addresses];
Run Code Online (Sandbox Code Playgroud)

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

当我使用正确'Specify SQLCMD Variabeles...'的-settings 进行模式更新时,将var ExtDB设置为'ExtDBnn'结果Synonym,数据库被正确设置为:

CREATE SYNONYM [dbo].[addressesExtDB] FOR [ExtDBnn].[dbo].[addresses];
Run Code Online (Sandbox Code Playgroud)

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

小智 0

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

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

面对这个问题时,我结束了在从数据库获取的 .dacpac 文件中进行数据库名称 -> 变量替换 - 一切都以这种方式进行,尽管这是一个相当大的黑客。