私たちは、CLRプロシージャでメモリ内のDataTableを持っています。重要な処理の後、DataTableには、データベース内のテーブルにロードする必要がある多くのデータがあります。残念ながら、context connectionを使用しているため、SqlBulkCopyは機能しません(エラー:)。要求された操作はコンテキスト接続outline of context restrictionsで利用できません。SQL CLR SqlBulkCopy from DataTable
追加の通常の接続を構築し、それを使用してSQLBulkCopyを実行することを考えています。これは、regular connection over a context connectionを使用するオーバーヘッドを考えると、むしろばかげているようです。私たちは、DataTableの行を繰り返し処理し、それぞれのレコードを挿入することを考えましたが、サイズが大きく、SQLBulkCopyがより適しているようです。
私たちはDataTableと結婚しておらず、膨大な量のデータをCLRプロシージャからデータベースに挿入する最良の方法を探しています。 DataTableの最終的な注記は、基礎となるデータベーステーブルを表しますが、DataSetまたはTableAdapterを介してテーブルに関連付けられていません。 CLR手順でこれを行う方法はすぐには分かりませんでした。これを行い、AcceptChangesメソッドまたはUpdateメソッドを使用することは、容認できる解決策になります。
実際には、DataTableは、重要な処理の後にレコードを格納するための便利なオブジェクトとして機能しています。つまり、未接続のDataTableをレコード挿入のためにSqlBulkCopyに送信する機能は、接続タイプで問題が発生するまで、スラムダンクと思われました。私はこれについてもっと考えているほど、私は定期的な接続を開くことはおそらく行く方法であるということに同意する傾向があります。 – ahsteele