SqlBulkCopy に関していくつか質問があります。
ビジネス コンポーネントから数百万のレコードをテーブルに挿入する必要があります。私は次のアプローチを検討しています:
- SqlBulkCopy を使用して、データを宛先テーブルに直接挿入します。テーブルには既存のデータとインデックス (変更できない) があるため、一括ログ記録の動作が得られず、TabLock を適用できません。
- SqlBulkCopy を使用して、一時データベースのヒープにデータを一度に挿入します (バッチサイズ = 0)。完了したら、ストアド プロシージャを使用して一時テーブルから宛先テーブルにデータを移動します。
- SqlBulkCopy を使用して一時データベースのヒープにデータを挿入しますが、バッチサイズを指定します。完了したら、ストアド プロシージャを使用して一時テーブルから宛先テーブルにデータを移動します。
- データを分割し、複数の SqlBulkCopy を使用して一時データベースの複数のヒープに同時に挿入します。データの各チャンクがアップロードされたら、ストアド プロシージャを使用して一時テーブルから宛先テーブルにデータを移動します。
エンドツーエンド時間が最も短いアプローチはどれですか?
SqlBulkCopy を使用してデータをインデックス付きのテーブルにアップロードする場合、同時にテーブルに対してクエリを実行できますか?