1

SQL Server 2005 を使用しています。

基本的に同じデータを含む開発データベースと製品データベースがあります。RedGate SQL Data Compare 5 と比較すると、4 つのレコードのみが異なると表示されます。しかし、テーブルを開いて表示すると、まったく異なるソート順になっています。どちらのテーブルにもインデックスや並べ替え順序を強制するものはありません。開発者が製品と同じ順序で並べ替えられていることを確認しようとしています。しかし、RedGate は私が近くにいるときに教えてくれません。同じソート順でなくても、一致するレコードを見つけているように見えるからです。どうすればそれをオーバーライドできますか?

このツールを使用して、並べ替え順序をいつ把握したかを知らせて、正しい順序であることを確認したいと思います。

4

1 に答える 1

1

ソート順が異なるということは、行が物理的に異なる方法でデータファイルに配置されることを意味しますが、データは依然として正確に一致するため、DCはそれらが一致することを報告します。SQL Serverには変更を制御する方法がないため、違いに気付いたとしても違いを同期する方法がないため、「物理ディスクの順序を尊重する」(基本的には要求しているもの)にするオプションはありません。ディスクの順序。

テーブルをクエリするときにデータがディスクからプルされる順序は、決して信頼されるべきではありません。特定の順序が必要な場合は、クエリに「ORDER BY」句を含めて、特定の並べ替え順序を強制する必要があります。ORDER BYを使用できない理由がある場合、特定の並べ替え順序を強制する他の唯一のオプションは、テーブルを並べ替えるフィールドにクラスター化インデックスを追加することです。

本当にデータを並べ替える必要がある場合は、「間違っている」テーブルを切り捨てて、「INSERTINTO[不良オーダーテーブル]SELECT*FROM[良いオーダーテーブル]」を入力する必要があります。それでも、望ましい効果が得られるはずですが、保証はありません。

最良の選択肢として、節による順序付けをお勧めします。これらのオプションのいずれも機能しない理由がある場合は、私に知らせてください。他の提案を試みることができます。

于 2009-06-17T19:47:31.483 に答える