【问题标题】:How to get RedGate Data Compare to consider sort order?如何获取 RedGate 数据比较以考虑排序顺序?
【发布时间】:2010-10-25 23:15:00
【问题描述】:

我使用的是 SQL-Server 2005。

我有一个 dev 和 prod 数据库,其中包含基本相同的数据。当我与 RedGate SQL Data Compare 5 进行比较时,它说只有 4 条记录不同。但是,当我打开表格并查看它们时,它们的排序顺序完全不同。两个表都没有索引或任何强制排序顺序的东西,我试图确保我的开发人员按照与产品相同的顺序进行排序。但 RedGate 不会告诉我何时关闭,因为它显然正在寻找匹配的记录,即使它们的排序顺序不同。我该如何覆盖它?

我想使用该工具来判断我何时确定了排序顺序,以确保我的排序正确。

【问题讨论】:

    标签: sql-server-2005 sorting redgate


    【解决方案1】:

    不同的排序顺序只是意味着行以物理上不同的方式放置在数据文件中,但数据仍然完全匹配,因此 DC 仍然报告它们匹配。没有选项可以将其设置为“尊重物理磁盘顺序”(这本质上就是您要问的),因为即使它注意到了差异,也无法同步差异,因为 SQL Server 没有控制修改的方法磁盘顺序。

    不应该依赖查询表时从磁盘中提取数据的顺序 - 如果您需要特定顺序,则应在查询中包含“ORDER BY”子句以强制特定排序顺序.如果出于某种原因您不能使用 ORDER BY,则强制特定排序顺序的唯一其他选择是在您希望对表进行排序的字段上添加聚集索引。

    如果您确实需要重新排序数据,那么您需要截断“错误”的表并使用“INSERT INTO [bad order table] SELECT * FROM [good order table]”填充它。即使这样,虽然它应该有预期的效果,但不能保证。

    我建议将 order by 子句作为您的最佳选择。如果有原因这些选项都不起作用,请告诉我,我可以尝试提出其他建议。

    【讨论】:

    • 是的,订购似乎是最好的选择。不幸的是,我正在处理一些链接到一些外部数据的历史数据,使用默认顺序来了解它们是如何链接的。愚蠢,但它就在那里。我想我们只需要设置一个顺序,并刷新所有数据,包括链接的数据,以便妥善处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2017-01-06
    • 2016-12-25
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多