有没有人有一个很好的 Sql Alert 来发送电子邮件通知,当查询阻塞发生超过几分钟时?我知道如何编写自己的代码,但是在 Internet 上似乎是一个很好的代码库。如果可能,请在没有事件通知的情况下给出答案。
我喜欢下面这个: 阻止发生时的电子邮件通知
我避免使用这些,因为它们使用我听说已被弃用的 sys.processes: 自动检测阻塞
这与第一个类似,但没有那么多细节: 查找长时间运行的查询
在实施之前尝试找到好的解决方案或共识。随意发送解决方案或在下面编辑一个。
谢谢,
注意:下面的一个似乎有一个不必要的临时表步骤,可能可以消除,只需一封 sql 电子邮件。
*/
SET NOCOUNT ON
-- Checked for currently running queries by putting data in temp table
SELECT s.session_id
,r.STATUS
,r.blocking_session_id
,r.wait_type
,wait_resource
,r.wait_time / (1000.0) 'WaitSec'
,r.cpu_time
,r.logical_reads
,r.reads
,r.writes
,r.total_elapsed_time / (1000.0) 'ElapsSec'
,Substring(st.TEXT, (r.statement_start_offset / 2) + 1, (
(
CASE r.statement_end_offset
WHEN - 1
THEN Datalength(st.TEXT)
ELSE r.statement_end_offset
END - r.statement_start_offset
) / 2
) + 1) AS …
Run Code Online (Sandbox Code Playgroud)