sqlserver数据库脚本关闭sleeping10分钟的数据库连接
时间: 2024-02-19 22:04:12 浏览: 28
要关闭 SQL Server 数据库中超过 10 分钟的 sleeping 连接,可以使用以下 T-SQL 脚本:
```
DECLARE @SPID INT
DECLARE @CMD VARCHAR(100)
DECLARE @MAX_DURATION INT = 10 -- 最大持续时间(分钟)
DECLARE my_cursor CURSOR FOR
SELECT spid, DATEDIFF(MINUTE, last_batch, GETDATE()) AS duration
FROM sys.sysprocesses
WHERE status = 'sleeping' AND DATEDIFF(MINUTE, last_batch, GETDATE()) > @MAX_DURATION
OPEN my_cursor
FETCH NEXT FROM my_cursor INTO @SPID, @DURATION
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CMD = 'KILL ' + CAST(@SPID AS VARCHAR)
EXEC(@CMD)
FETCH NEXT FROM my_cursor INTO @SPID, @DURATION
END
CLOSE my_cursor
DEALLOCATE my_cursor
```
这个脚本会利用 sysprocesses 视图来查找所有状态为 sleeping,且持续时间超过 10 分钟的进程,并逐个终止它们。请注意,这个脚本可能会影响正在进行的任务和数据完整性,因此在使用之前请确保了解相关信息,并咨询数据库管理员或开发人员。