У меня есть некоторый С#, в котором я создаю читатель на соединении (ExecuteReader
), то для каждой строки в этом читателе выполните другую команду (с помощью ExecuteNonQuery
). В этом случае лучше ли использовать MultipleActiveResultSets=True
в моем соединении или использовать несколько соединений?
MultipleActiveResultSets = True или несколько соединений?
Ответ 1
Для этого типа операции были добавлены несколько наборов активных результатов (MARS), так что вам не нужно одновременно открывать два подключения, чтобы они могли читать из SqlDataReader и выполнять дополнительные партии.
MARS совместим с SQL Server 2005 и выше. Чтобы процитировать из документов MSDN:
Перед введением Multiple Active Result Sets (MARS), разработчики пришлось использовать либо множественные соединения или серверных курсоров для решения определенных сценариев.
Подробнее см.:
Произведенный пример чтения и обновления данных:
Библиотека MSDN - Манипулирование данными (MARS) прокрутите вниз до "Чтение и обновление данных с помощью MARS"
Ответ 2
Это насколько я знаю, почему была добавлена причина MARS, поэтому я думаю, что вы должны использовать ее.
Ответ 3
Лучший способ проверить это - запустить SQLServer Profiler и посмотреть, что на самом деле происходит на стороне сервера.
Я предполагаю, что с тех пор, как вы используете ExecuteNonQuery(), это будет не лучше. Таким образом, вы не работаете с несколькими результатами.