質問: 私はC#SqlBulkCopyクラスに精通しています。このクラスでは、DataTableを通過する 'WriteToServer'メソッドを呼び出すことができます。 私の質問は、SQL Serverの基本的なメカニズムがそのデータを一括挿入するために使用されているメカニズムですか? 私が尋ねる理由は、 バルクインサート MSDN T-SQLヘルプファイルで参照されているバルク挿入がデータファイルをインポートする必要があるということです。 SqlBulkCopyはデータファイルを作成しますか? 私はSQLで一括挿入機能を使用できるかどうかを調べるために、このことを理解したいと思います。 特定のテーブル(何千もの行)に挿入するすべての行を準備するSQL文を記述すると、それらを一括して宛先テーブルに挿入できますか?このようなものは、私が今やっていることです。 ``` INSERT INTO sync_filters (table_name, device_id, road_id, contract_id) SELECT * FROM dbo.sync_contract_filters (@device_id) ``` また、dbo.sync_contract_filtersは挿入するすべての行を生成する関数です。これは一括挿入できますか?
回答: SqlBulkCopyはデータファイルを作成しません。使用可能な通信プロトコル(名前付きパイプ、TCP / IPなど)を使用して.Net DataTableオブジェクトからサーバーに直接データテーブルをストリーミングし、BCPで使用されているのと同じ手法を使用してデータを一括してデスティネーションテーブルに挿入します。