我有一个简洁的小查询,它让我知道任何持续运行超过 3 分钟的持续查询。
SELECT
sqltext.TEXT,
s.session_id, r.status,
r.total_elapsed_time, r.cpu_time, r.wait_time
FROM sys.dm_exec_sessions s
INNER JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
INNER JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
WHERE s.is_user_process = 1
AND s.session_id <> @@SPID AND r.total_elapsed_time > 300000000
我遇到了这篇文章,它展示了如何设置 SQL 代理警报并作为通知发送。我可以结合我的查询,以便在我的查询运行时间超过 3 分钟时发送警报电子邮件吗?
一种简单的方法是创建一个 SQL 代理作业,其中包含一个运行以下代码的步骤:
配置作业通知以在失败时发送电子邮件,如果查询返回任何行,您将收到作业失败的电子邮件。
除了设置作业失败通知之外,您还可以设置 SQL 代理警报,以针对您引用的文章中引发的错误发出警报。但是,如果工作通知足够,那么设置的工作量就会减少。