SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » get NoCount on/off для произвольной сессии
get NoCount on/off для произвольной сессии [сообщение #1837] Wed, 15 March 2023 18:41 Переход к следующему сообщению
Павел677 в настоящее время не в онлайне  Павел677
Сообщений: 1
Зарегистрирован: March 2023
Junior Member
Добрый день.

Подскажите как для произвольной сессии получить свойство noCount

Зачем :

Есть сервер приложений, который использует пул соединений к БД. В какой-то момент (вызове хранимки или еще что-то) в соединении предположительно выставляется значение set no count on. И это плохо влияет на работоспособность сессии (с этого момент она "испорчена" - из пула она может быть предоставлена другой программной сессии сервера приложений и там поведет себя криво)

Как мне в management studio при выполнении запроса к sys.dm_exec_requests (смотрю активные сессии, их блокировки и запросы) понять какое было сделано последнее значение set noCount по каждой сессии ?

Гуглил и не нашел. Это вообще возможно ?

Вот например, есть свойство sys.dm_exec_requests.arithabort
Есть что-то аналогичное, типа sys.dm_exec_requests.noCountOn ?
Re: get NoCount on/off для произвольной сессии [сообщение #1847 является ответом на сообщение #1837] Thu, 16 March 2023 15:10 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 368
Зарегистрирован: June 2022
Senior Member
Насколько мне известно такой возможности нет.
В качестве решения в переиспользуемой сессии можно выставлять все требуемые параметры явно.
Re: get NoCount on/off для произвольной сессии [сообщение #1852 является ответом на сообщение #1847] Thu, 16 March 2023 21:23 Переход к предыдущему сообщению
shigor в настоящее время не в онлайне  shigor
Сообщений: 26
Зарегистрирован: March 2023
Географическое положение: НиНо
Junior Member
никак.. единственное что могу добавить: хранимка не может изменить nocount сессии, если она его меняет, то только для себя и только на время ее исполнения и по завершении, значение nocount вернется обратно в то, которое было до запуска хранимки.
для текущей сессии определить можно через @@OPTIONS. для других сессий попробовать посмотреть в план последнего батча, если nocount там был, то это будет отражено, но если это следующий батч, то уже никак.
кусок плана:
<BatchSequence><Batch><Statements><StmtSimple StatementText="set nocount on&#xd;&#xa;" StatementId="1" StatementCompId="1" StatementType="SET ON/OFF" RetrievedFromCache="true">
Предыдущая тема: Темпоральные таблицы
Следующая тема: Катастрофическое снижение производительности при распараллеливании запроса
Переход к форуму:
  


Текущее время: Sun Dec 22 08:01:36 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00591 секунд