我正在使用SQL-Server 2005。
我有一个dev和prod数据库,其中包含基本相同的数据。当我与RedGate SQL Data Compare 5进行比较时,它表示只有4条记录不同。但是,当我打开表并查看它们时,它们的排序顺序完全不同。这两个表都没有索引或任何强制排序顺序的东西,我正在尝试确保我的dev按照与prod相同的顺序排序。但RedGate在我关闭时不会告诉我,因为它显然找到匹配的记录,即使它们的排序顺序不同。我该如何覆盖它?
我想用这个工具告诉我何时找出排序顺序,以确保我做对了。
答案 0 :(得分:1)
不同的排序顺序只是意味着行以物理上不同的方式放在数据文件中,但数据仍然完全匹配,因此DC仍然报告它们匹配。没有选择让它“尊重物理磁盘顺序”(这基本上就是你所要求的),因为即使它注意到差异,也无法同步差异,因为SQL Server没有控制修改的方法磁盘顺序。
不应依赖查询表时从磁盘中提取数据的顺序 - 如果需要某个顺序,则应在查询中包含“ORDER BY”子句以强制执行某个排序顺序。如果有一些原因导致您无法使用ORDER BY,则强制执行某个排序顺序的唯一其他选项是在您要对表进行排序的字段上添加聚簇索引。
如果您确实需要重新排序数据,那么您需要截断“错误”的表并用“INSERT INTO [错误订单表] SELECT * FROM [good order table]”填充它。即使这样,虽然它应该具有预期的效果,但是不能保证。
我建议将order by子句作为您的最佳选择。如果没有这些选项可行,请告诉我,我可以尝试提出其他建议。