让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
原文地址:https://www.cnblogs.com/goding/p/3611152.html