如何在特定服务器实例上的特定数据库上自动查找并终止长期阻止(假设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]