最近、一連の複雑な C# ベースのスケジューリング ロジックを SQL CLR ストアド プロシージャ (SQL Server 2005 で実行) に変えました。次の理由から、コードが SQL CLR の優れた候補であると確信しました。
- ロジックには、SQL Server からの大量のデータが含まれます。
- ロジックが複雑で、TSQL を使用して実行するのが難しい
- スレッド化や同期化、またはサンドボックスの外部からのリソースへのアクセスはありません。
私たちのSPの結果は、これまでのところかなり良いです. ただし、ロジックの出力は複数のデータ テーブルの形式であるため、sp の結果として単一の行セットを返すことはできません。代わりに、このコードでは、C# ジェネリック コレクションの各レコードを SQL テーブルに保存するために、foreach ループに多数の "INSERT INTO ...." ステートメントを使用しています。コード レビュー中に、SQL CLR 内のインライン SQL INSERT アプローチがパフォーマンスの問題を引き起こす可能性があるかどうかについて懸念を表明した人がいて、(C# ジェネリック コレクションから) データをダンプするための他のより良い方法があるかどうか疑問に思いました。
それで、何か提案はありますか?