Med*_*oft 3 sql-server sql-server-2012
SQL Server 2012中如何自动终止或杀死挂起的任务?当我运行时sp_who2,它显示许多进程处于某种Suspended状态。
我想知道有什么方法可以自动终止或终止挂起的进程/任务,而不是手动执行。
我知道如何SPID手动终止任务,但我想要一些可以在定义的时间后自动终止这些任务的东西。
任何帮助将不胜感激。
小智 5
下面是简单的代码片段,显示所有挂起的 SQL 任务并生成脚本来终止它们。
DECLARE @sql NVARCHAR(max) = ''
SELECT @sql = @sql + 'kill ' + cast(session_id as nvarchar(30)) + ';'
-- select *
FROM sys.dm_exec_requests
WHERE status = 'suspended'
--and database_id = DB_ID('master')
--and user_id = USER_ID('sa')
print @sql
--EXEC(@sql)
Run Code Online (Sandbox Code Playgroud)
要按数据库添加过滤器,请取消注释以下行并更改数据库名称
and database_id = DB_ID('master')
Run Code Online (Sandbox Code Playgroud)
您还可以按正在运行挂起查询的数据库用户对其进行过滤
and user_id = USER_ID('sa')
Run Code Online (Sandbox Code Playgroud)
要自动执行生成的脚本,只需取消注释最后一行
EXEC(@sql)
Run Code Online (Sandbox Code Playgroud)
应该适用于所有 SQL Server 版本。在 Microsoft SQL Server 2008 R2 及更高版本上进行测试