6

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

在研究这个问题时,我在Microsoft ConnectStackOverflow上都遇到过类似的问题,但这些问题似乎还没有得到解决。有人对解决此问题的其他方法有任何建议吗?

4

1 回答 1

9

看来此问题是由字符串文字中的换行符引起的。

这是不好的:

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

这很好:

DECLARE @goodQuery NVARCHAR(MAX) = N'SELECT '+
                                      '* ' +
                                    'FROM ' +
                                      '[dbo].[MyRadTable]';
于 2015-07-16T18:14:01.080 回答