1

我正在使用 SQL-Server 2005。

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

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

4

1 回答 1

1

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

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

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

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

于 2009-06-17T19:47:31.483 回答