Search
Write a publication
Pull to refresh

Более простой мониторинг активности

В связи с периодическими вылетами службы MS SQL Server на одном из серверов компании решил написать SQL-скрипт, с помощью которого можно будет понять, какой именно запрос (прошу прощения за тавтологию) вызывает отказ службы, поскольку из журналов самого MS SQL нам известен только spid.

Поиск по интернетам натолкнул на sp_who и spwho2, отуда же вспомнил и про sys.dm. Уже после написания запроса увидел топик на хабре по аналогичной теме, где предлагается скачать и использовать sp_WhoIsActive вместо/в сочетании с ActivityMonitor. Однако зачастую предлагаемый скрипт целиком не нужен, поэтому хочу поделиться своим запросом.

SELECT der.session_id -- фактически spid
, der.start_time -- дата и время начала выполнения запроса
, der.command -- тип запроса
, DB_NAME(der.database_id) AS[Database] -- имя БД
, [DES].[host_name] -- хост, с которого произошло подключение
, [DES].[program_name] -- программа, из которой был запрос
, [DES].client_interface_name -- название интерфейса, с помощью которого произошло подключение
, [DES].login_name -- логин, от имени которого выполнялся запрос
, [des].original_login_name -- реальное имя входа (поскольку вход может осуществляться с использованием Credentials)
, blocking_session_id -- spid блокирующей сессии
,(
SELECT [text]
FROM sys.dm_exec_sql_text(der.[sql_handle])
) AS [Query] -- собственно текст запроса
FROM sys.dm_exec_requests der
JOIN sys.dm_exec_sessions [DES]
ON
[DES].session_id = der.session_id

WHERE der.[status] = 'running'
AND [DES].is_user_process = 1

Ну и напомнить, что и в MS SQLServer 2005 и в MS SQLServer 2008 монитор активности позволяет фильтровать выводимые ими результаты
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.