SQL Server: отслеживание медленно выполняющегося запроса по завершении

Я пытаюсь работать над сценарием для медленных запросов. Я понимаю, что мы можем получить список медленно выполняющихся запросов, используя sys.dm_exec_requests. Скажем, у меня есть запрос Q1, который выполняется очень медленно, скажем, 1 час. Пока Q1 работает, т.е. выполняется, я могу отслеживать его с помощью sys.dm_exec_requests DMV. Если я правильно понял, когда Q1 будет завершен, его статистика больше не будет доступна в этом DMV. Вместо этого нам нужно взглянуть на sys.dm_exec_query_stats. Но как мне получить статистику по этому конкретному запросу Q1, который работал медленно? Имеется в виду, как связать данные, которые я ранее получил, в sys.dm_exec_requests и sys.dm_exec_query_stats?

1 ответ

Поскольку вы работаете с таким широким диапазоном версий, вам придется использовать наименьший общий знаменатель - трассировку SQL. Настройте трассировку для хранимых процедур и завершает специальный оператор, который занимает больше времени, чем некоторый порог. Затем запустите серверную часть и время от времени просматривайте результаты.

Следует отметить, что если бы 2005 год не был включен, я бы предложил расширенные мероприятия.

Другие вопросы по тегам