大量のデータを SQL サーバーに挿入しようとしています。私の宛先テーブルには、「ハッシュ」と呼ばれる一意のインデックスがあります。
SqlDataAdapter の実装を SqlBulkCopy に置き換えたいと考えています。SqlDataAapter には「ContinueUpdateOnError」というプロパティがあり、true に設定すると、adapter.Update(table) は可能なすべての行を挿入し、エラー行に RowError プロパティのタグを付けます。
問題は、どの行が挿入され、どの行が挿入されなかったのか (一意のインデックスのため) を追跡しながら、SqlBulkCopy を使用してできるだけ早くデータを挿入するにはどうすればよいかということです。
追加情報は次のとおりです。
このプロセスは反復的であり、多くの場合、繰り返すスケジュールが設定されています。
ソース テーブルと宛先テーブルは巨大になる可能性があり、場合によっては数百万行になります。
最初にハッシュ値を確認することは可能ですが、行ごとに 2 つのトランザクションが必要です (最初に宛先テーブルからハッシュを選択し、次に挿入を実行します)。adapter.update(table) の場合、行ごとのハッシュ ヒットをチェックするよりも、RowError をチェックする方が速いと思います。