Как определить, активен ли MARS для текущего соединения? - PullRequest
1 голос
/ 05 ноября 2011

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

Либо с помощью команды TSQL, либо с помощью API-интерфейса собственного клиента .NET SQL Server.

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

Вы можете проверить свойство ConnectionString для наличия атрибута MultipleActiveResultSets и, если он есть, убедиться, что для него установлено значение true.

В зависимости от использования кода вы также можете проверить свойство SqlConnection.ServerVersion, чтобы проверить поддержку MARS. Основное число должно быть> = 9. (SQL Server 2005 и выше). Это было бы полезно, если ваш код используется в разных версиях SQL-сервера.

SqlConnectionStringBuilder также можно использовать в обратном порядке (возможно, странная идея), у него есть свойство MultipleActiveResultSets.

1 голос
/ 05 ноября 2011

Если проверка строки подключения (лучший вариант, IMO) не подходит ... возможно, намеренно подделать что-то, что потребует MARS, например, открыть считыватель данных в двух строках, прочитать одну из строк и (не закрывая читателя) запросить другой запрос на чтение.

Обратите внимание, что буферизация может повлиять на это, но стоит попробовать ...

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