模式比较检测相同存储过程的差异

时间:2015-07-16 14:07:35

标签: sql-server visual-studio-2012 stored-procedures dacpac schema-compare

我正在使用Visual Studio 2012架构比较工具将实际数据库与Microsoft SQL Server DAC包文件(dacpac)区分开来。期望数据库和文件相等"。但是,架构比较报告了三个存储过程的BodyScript属性的差异,所有这些属性都包含大量动态SQL。然而,令人沮丧的是,在对象定义的实际差异中,存储过程的定义之间没有明显的差异。此外,我们已将脚本复制到许多不同的diff工具中以查找空格类型差异,但看起来这两个脚本是二进制相同的。我们已经使用了许多架构比较选项(忽略空格,忽略关键字大小写等),但似乎没有解决这个问题。

在研究此问题时,我在Microsoft ConnectStackOverflow上发布了类似的问题,但似乎这些问题尚未解决。有没有人对解决这个问题的其他方法有任何建议?

1 个答案:

答案 0 :(得分:7)

看来这个问题是由字符串文字中的新行字符引起的。

这很糟糕:

DECLARE @badQuery NVARCHAR(MAX) = N'SELECT
                                      *
                                    FROM
                                      [dbo].[MyRadTable]';

这很好:

DECLARE @goodQuery NVARCHAR(MAX) = N'SELECT '+
                                      '* ' +
                                    'FROM ' +
                                      '[dbo].[MyRadTable]';