让SQL SERVER自动清理掉处于SLEEPING状态超过30分钟的进程(转)

时间:2023-03-09 06:30:41
让SQL SERVER自动清理掉处于SLEEPING状态超过30分钟的进程(转)

原文地址:http://www.itpub.net/thread-809758-1-1.html

use master
go if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_killspid]
GO create proc p_killspid
@dbname varchar(200) --要关闭进程的数据库名
as
declare @sql nvarchar(500)
declare @spid nvarchar(20) declare #tb cursor for
select spid=cast(spid as varchar(20))
from master..sysprocesses
where dbid=db_id(@dbname) and status='sleeping' and datediff(mi,login_time,getdate())>=30
open #tb
fetch next from #tb into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #tb into @spid
end
close #tb
deallocate #tb
go --用法
exec p_killspid 'newdbpy'
go