【问题标题】:Redgate SQL Compare - How to ignore differences of Column order?Redgate SQL 比较 - 如何忽略列顺序的差异?
【发布时间】:2017-01-06 13:30:55
【问题描述】:

我正在使用 RedGate SQL Compare 11.6 来比较两个 SQLServer 2016 数据库。

问题是,比较结果包括具有相同列但顺序不同的表。我想排除这个。有没有办法做到这些?

RedGate 的支持论坛和帮助文档说“默认行为是忽略这些差异”,但它似乎不是那样工作的。

【问题讨论】:

    标签: redgate red-gate-data-compare


    【解决方案1】:

    默认情况下它不比较列顺序。为了验证这一点,我使用 SQL Server 2016 & Compare 11.6 以这种方式设置了一个测试:

    USE Test;
    GO
    CREATE TABLE dbo.Order1 (
         ID INT,
         NotID TINYINT,
         SomeValue VARCHAR(50)
        );
    GO
    
    USE Test2;
    GO
    CREATE TABLE dbo.Order1 (
         SomeValue VARCHAR(50),
         ID INT,
         NotID TINYINT
        );
    GO
    

    当我对这两个表进行比较时,输出如下:

    如果您在顶部注明,它表示有 24 个相同的对象。这两个表算作相同的。但是,比较确实注意到列顺序不同。有一个选项可以设置“强制列顺序”来改变这种行为。启用后,您会从比较中看到:

    这可能就是您所看到的。检查比较项目上的选项。

    【讨论】:

    • 说得好!我在表中确实存在其他差异(例如缺少索引、约束)。这可能是它不在相同对象下的原因。不过,我主要关心的是,如果您单击“显示”-> 组,它会显示列不相等,即使只是顺序不同。
    • 那是因为它们不同。但是,除非您选择了强制顺序,否则它不会显示在有差异的表列表中,并且除非您这样做,否则它将无法选择进行更新,并且它不会更改中列的顺序它生成的 T-SQL,除非你已经这样做了。它只是显示它看到的差异。
    猜你喜欢
    • 2014-02-21
    • 2021-08-31
    • 2016-11-01
    • 1970-01-01
    • 2023-03-21
    • 2018-08-16
    • 2015-10-02
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多