質問: SqlBulkCopyを実装してパフォーマンスをテストする前に、いつ使用するべきか、比較的小さなデータセット(1000行程度)でも使用することをお勧めしますか?この状況でそれを使用する上でオーバーヘッドはありますか、それとも、妥当な数の行を挿入するときに私はいつも使用するべきですか?
回答: 私はおそらく1000行のためにそれを*使用*していますが、コマンド・バッチ処理と*似た*何かを行うことができます。 1000行の場合、最も簡単な方法は、必要なデータを適切な形状の`DataTable`にスローすることです。これはかなり簡単です。大きなセットの場合は、 `IDataReader` (メモリを最初にすべてバッファリングするのではなく、レコードをストリーミングするため)を書いてください。 もう一つは、トランザクション、耐久性などです。 `SqlBulkCopy`を使用する場合は、これを使用して*ステージング*テーブルにプッシュし、実際のテーブルにデータをプッシュするためにsproc(または単純なTSQLコマンド)を呼び出します。これは、単一のセットベースの(そして完全にログに記録された) `INSERT`を除いて、 *実際の*テーブルをきれいに保ちます。 しかし、パフォーマンスを測定したいだけの場合は、実際のテーブルに投げて球場の推定値を取得する必要があります。