如何在 SQL Server 2012 中自动终止或杀死挂起的任务?

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 及更高版本上进行测试