#.net #sql-server #tsql
#.net #sql-сервер #tsql
Вопрос:
я хотел бы определить, активен ли MARS (набор с несколькими активными результатами) в текущем соединении, чтобы проверить, нет ли неправильной конфигурации в функции, которая нуждается в поддержке MARS.
Либо с помощью команды TSQL, либо с помощью метода собственного клиентского API .NET SQL Server.
Ответ №1:
Вы могли бы проверить свойство ConnectionString ConnectionString на наличие атрибута MultipleActiveResultSets, и если он есть, убедитесь, что для него установлено значение true.
В зависимости от использования вашего кода вы также можете проверить SqlConnection.Свойство ServerVersion для проверки поддержки MARS. Основное число должно быть > = 9. (SQL Server 2005 и выше). Это было бы полезно, если ваш код используется в разных версиях SQL Server.
SqlConnectionStringBuilder также можно использовать в обратном порядке (возможно, странная идея), у него есть свойство MultipleActiveResultSets.
Комментарии:
1. @Программное обеспечение не ручное — вы можете использовать SqlConnectionStringBuilder, который разберет его на пары ключ / значение
2. Вы просто проверяете ключ MultipleActiveResultSets
3. Ок, ок 🙂 Я использую корпоративную библиотеку. Но это может быть решением. Лучше всего было бы иметь логическое свойство где-нибудь у провайдера.
Ответ №2:
Если проверка строки подключения (лучший вариант, IMO) не привлекает … возможно, намеренно подделать что-то, что могло бы потребоваться MARS, например, открыть средство чтения данных в двух строках, прочитать одну из строк и (не закрывая средство чтения) запросить другой запрос на основе чтения.
Обратите внимание, что буферизация может повлиять на это, но стоит попробовать…