Как найти истекшие операторы в профилировщике SQL 2005

Я пытаюсь найти операторы SQL, время ожидания которых истекло, используя профилировщик SQL 2005. Есть ли способ установить такой фильтр?


person Ron Harlev    schedule 10.11.2008    source источник


Ответы (3)


В Profiler вы можете добавить событие «Внимание» в разделе «Ошибки и предупреждения». Это определение

Собирает все события внимания, такие как запрос клиента на прерывание или разрыв соединения с клиентом.

Что касается других ошибок (взаимоблокировок, ограничений и т. д.), попробуйте «Предупреждение о выполнении» (сообщает о предупреждении, произошедшем во время выполнения инструкции или процедуры SQL) или «Сообщение об ошибке пользователя» (сообщение об ошибке, отображаемое пользователю в случае ошибка или исключение).

person jons911    schedule 10.11.2008
comment
+1. ТАКЖЕ, если тайм-аут вызван отключением, соберите событие графа взаимоблокировки. - person Mitch Wheat; 24.01.2009

да.

  • Отметьте «Все события»
  • Перейти в раздел замков
  • Укажите события "lock: Timeout"

Событие блокировки в электронной документации

Теперь это работает с блокировками на стороне сервера (@@LOCK_TIMEOUT ‹> 0). Я не знаю, будет ли превышен тайм-аут на стороне клиента.

person gbn    schedule 11.11.2008
comment
Это позволит поймать только тайм-ауты, вызванные блокировкой. Длительные запросы, время ожидания которых истекло вызывающим приложением, не обязательно будут иметь проблемы с блокировкой. - person jons911; 11.11.2008

Один из вариантов: если вы знаете, какие тайм-ауты настроены вашим клиентом (т.е. 30 секунд по умолчанию), вы можете настроить фильтр для своей трассировки, чтобы собирать только события с продолжительностью, превышающей или равной вашему тайм-ауту (минус секунда или два).

person John Lemp    schedule 11.11.2008
comment
Для тех, кто после меня: Выбор событий => Фильтры столбцов => Длительность => Больше или равно - person Boris Callens; 18.04.2013