自动终止阻止并报告结果

时间:2017-03-09 00:37:23

标签: sql sql-server

如何在特定服务器实例上的特定数据库上自动查找并终止长期阻止(假设1小时)查询,并报告结果以查看被杀死的块查询。

1 个答案:

答案 0 :(得分:0)

您可以使用

查看所有服务器事务
SELECT * FROM sys.dm_exec_requests

这只显示查询和处理时间here

SELECT      r.start_time [Start Time],session_ID [SPID],
        DB_NAME(database_id) [Database],
        SUBSTRING(t.text,(r.statement_start_offset/2)+1,
        CASE WHEN statement_end_offset=-1 OR statement_end_offset=0 
        THEN (DATALENGTH(t.Text)-r.statement_start_offset/2)+1 
        ELSE (r.statement_end_offset-r.statement_start_offset)/2+1
        END) [Executing SQL], 
        Status,command,wait_type,wait_time,wait_resource, 
        last_wait_type
FROM        sys.dm_exec_requests r
OUTER APPLY sys.dm_exec_sql_text(sql_handle) t
WHERE       session_id != @@SPID -- don't show this query
AND         session_id > 50 -- don't show system queries
ORDER BY    r.start_time

如果你想杀死阻止程序:

KILL [session_id]