0

SQL order byで同様の質問をしたと思ったのですが、 left outer join does not have correct orderですが、これは少し異なります。SSIS と標準データ フローを使用して、別の SQL-Server 2005 データベースからデータを取得しています。取得したレコードは、ソース テーブルとは異なる順序になっています (実際にはビューです)。古い DTS では、順序は変わりません。

ソースまたは宛先のテーブルまたはビューには順序がありません。通常、順序が重要な場合は指定されると思います。誰かに順序を指定してもらう必要があるかもしれませんが、それを進めることはできますが、私たちは過去の形状ファイルを扱っており、属性の順序が変更された場合、形状は間違ったデータを指しています.

インポート時にデータの順序が変わる理由はありますか? 回避策はありますか?

順番が重要な理由はここにあります。これはマッピング アプリケーション用であり、属性と形状が一致している必要があります。順序が変わると、項目が正しく一致しなくなります。残念ながら、データの順序を特定することはできません。以前のコーダーは一貫した順序を想定していたのではないかと思います。それが重要なことのすべてでした。SSIS を使用した順序は同じ順序ではなく、明示的に設定されることはありません。

4

1 に答える 1

4

SQL サーバー ステートメントによって返されるレコードの順序は、明示的な句SELECTがないと保証されません。ORDER BYDTS が選択したデータ セットが必要な順序で行を返したことは、単に幸運でした。

あなたが言うように、ビューには暗黙の順序がないため、ソースがビューである場合、これは二重に当てはまります。追加してもTOP 100 PERCENT ... ORDER BY、結果セットが実際に返される順序は保証されません (本のオンラインエントリの上部にある注を参照してください)。

唯一の修正方法はORDER BY、データ フロー内のクエリに句を追加することです。

必要な順序を返すことが保証されているビューに列のグループがあるかどうかは、質問から完全には明らかではありません。問題にアプローチします。

于 2009-05-15T11:31:29.383 に答える