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