あるデータベース テーブルから別のデータベース テーブルに大量のデータをコピーする必要があります。列の 1 つが ID 列であるため、SELECT ... INTO を使用できません。また、スキーマにいくつかの変更を加える必要があります。データのエクスポート ウィザードを使用して SSIS パッケージを作成し、それを Visual Studio 2005 で編集して必要な変更を加えました。INSERT INTO よりも確かに高速ですが、データを別のコンピューターにダウンロードして再度アップロードするのはばかげているように思えます。(それがSSISパッケージが行っていることであると私が正しいと仮定します)。サーバー上で直接実行され、ID 値を保持し、テーブルからデータを取得する BULK INSERT に相当するものはありますか? (私が知る限り、BULK INSERT はファイルからデータを取得することしかできません)
編集:IDENTITY_INSERTについては知っていますが、かなりの量のデータが含まれているため、INSERT INTO ... SELECTは少し遅いです。SSIS/BULK INSERT は、インデックスやログなどに関係なく、データをテーブルにダンプするため、高速です。(もちろん、データが入力されたテーブルにクラスター化インデックスを作成するのは高速ではありませんが、最初の試行で試した INSERT INTO...SELECT よりも高速です)
編集 2: スキーマの変更には次のものが含まれます (ただし、これらに限定されません)。 1. 1 つのテーブルを 2 つの新しいテーブルに分割します。将来的には、それぞれが独自の IDENTITY 列を持つようになりますが、移行のためには、元のテーブルの ID を両方の新しいテーブルの ID として使用するのが最も簡単だと思います。移行が完了すると、テーブルの 1 つが他のテーブルと 1 対多の関係になります。2. あるテーブルから別のテーブルへの列の移動。3. 1 対 1 のみを相互参照した相互参照テーブルを削除します。代わりに、参照は 2 つのテーブルのいずれかの外部キーになります。4. いくつかの新しい列がデフォルト値で作成されます。5. 一部のテーブルはまったく変更されていませんが、「すべてを新しい DB に入れる」という要求のためにコピーする必要があります。