是否有解析 SQLCMD 变量的选项,在 Visual-Studio 模式比较中进行比较?
Posted
技术标签:
【中文标题】是否有解析 SQLCMD 变量的选项,在 Visual-Studio 模式比较中进行比较?【英文标题】:Is there an option to parse SQLCMD-variables doing a comparison in Visual-Studio schema-comparison? 【发布时间】:2012-11-14 09:06:36 【问题描述】:看起来 Visual Studio Database Project
没有解析 SQLCMD
-variables 进行模式比较。
我所有的同义词看起来像
CREATE SYNONYM [dbo].[addressesExtDB] FOR [$(ExtDB)].[dbo].[addresses];
但它们一直被报告为与数据库不同。
当我使用正确的 'Specify SQLCMD Variabeles...'
-settings 进行架构更新时,其中 var ExtDB 设置为 'ExtDBnn'
,数据库中生成的 Synonym
正确设置为:
CREATE SYNONYM [dbo].[addressesExtDB] FOR [ExtDBnn].[dbo].[addresses];
重新比较操作再次错误地将所有同义词显示为不同。 所以比较应该解析 sqlcmd-variabeles 并使用结果与数据库进行比较。 我是否错过了执行此操作或其他操作的选项,或者您是否遇到了同样的问题并以某种方式找到了解决方案?
【问题讨论】:
【参考方案1】:不,变量根本不会传递给 VS 中的模式比较(您可以通过例如将您自己的贡献者添加到项目中来验证这一点)。
有趣的是,即使使用 SqlPackage.exe,变量也只会传递给源,而不是目标。
当遇到这种情况时,我结束了数据库名称 -> 在从数据库中获取的 .dacpac 文件中的变量替换 - 一切都以这种方式工作,即使它是一个相当黑客。
【讨论】:
【参考方案2】:在项目设置中为变量设置默认值。然后 SchemaCompare 将假定它们是相等的。
Schema-Compare without sqlcmd variable Default
Schema-Compare with sqlcmd variable Default
如果这不是您所了解的,您能否让我知道并提供一些说明?干杯
【讨论】:
这个答案对我不起作用。无论将什么值(或空白)设置为默认值或本地值,架构比较都会显示相同的结果。我正在运行 VS2019...以上是关于是否有解析 SQLCMD 变量的选项,在 Visual-Studio 模式比较中进行比较?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 数据库项目属性中的本地和默认 SQLCMD 变量有啥区别?