MultipleActiveResultSets = True или несколько соединений?

У меня есть некоторый С#, в котором я создаю читатель на соединении (ExecuteReader), то для каждой строки в этом читателе выполните другую команду (с помощью ExecuteNonQuery). В этом случае лучше ли использовать MultipleActiveResultSets=True в моем соединении или использовать несколько соединений?

Ответ 1

Для этого типа операции были добавлены несколько наборов активных результатов (MARS), так что вам не нужно одновременно открывать два подключения, чтобы они могли читать из SqlDataReader и выполнять дополнительные партии.

MARS совместим с SQL Server 2005 и выше. Чтобы процитировать из документов MSDN:

Перед введением Multiple Active Result Sets (MARS), разработчики пришлось использовать либо множественные соединения или серверных курсоров для решения определенных сценариев.

Подробнее см.:

Библиотека MSDN - Обзор MARS

Произведенный пример чтения и обновления данных:

Библиотека MSDN - Манипулирование данными (MARS) прокрутите вниз до "Чтение и обновление данных с помощью MARS"

Ответ 2

Это насколько я знаю, почему была добавлена ​​причина MARS, поэтому я думаю, что вы должны использовать ее.

Ответ 3

Лучший способ проверить это - запустить SQLServer Profiler и посмотреть, что на самом деле происходит на стороне сервера.

Я предполагаю, что с тех пор, как вы используете ExecuteNonQuery(), это будет не лучше. Таким образом, вы не работаете с несколькими результатами.