接続上にリーダーを作成するC#があり(ExecuteReader
)、そのリーダーのすべての行に対して、別のコマンドを実行します(ExecuteNonQuery
を使用)。この場合、MultipleActiveResultSets=True
接続で使用するか、複数の接続を使用しますか?
複数のアクティブな結果セット(MARS)がこのタイプの操作専用に追加されたため、SqlDataReaderから読み取り、追加のバッチを実行するために同時に2つの接続を開く必要はありません。
MARSはSQL Server 2005以降と互換性があります。 MSDNドキュメントから引用するには:
複数のアクティブな結果セット(MARS)が導入される前は、開発者は複数の接続またはサーバー側カーソルを使用して特定のシナリオを解決する必要がありました。
詳細については、以下を参照してください。
データの読み取りと更新を行った例:
MSDNライブラリ-データの操作(MARS) 「MARSを使用したデータの読み取りと更新」までスクロールします。
これは、MARSが追加された理由を知る限りですので、使用する必要があると思います。
これをテストする最良の方法は、SQLServer Profilerを起動し、サーバー側で実際に何が起こるかを確認することです。
私の推測では、ExecuteNonQuery()を使用しているので、それは良くないでしょう。したがって、実際には、複数の結果で作業することはありません。