MultipleActiveResultSets = True или несколько соединений? - PullRequest
71 голосов
/ 04 февраля 2009

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

Ответы [ 3 ]

85 голосов
/ 04 февраля 2009

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

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

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

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

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

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

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

17 голосов
/ 04 февраля 2009

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

0 голосов
/ 04 февраля 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...