结束SQL阻塞的进程

--结束SQL阻塞的进程
create    procedure sp_Kill_lockProcess
as 
    begin
        set NOCOUNT on
        declare @spid int ,
            @bl int ,
            @intTransactionCountOnEntry int ,
            @intRowcount int ,
            @intCountProperties int ,
            @intCounter int ,
            @sSql nvarchar(200)
 
        create table #tmp_lock_who ( id int identity(1, 1) ,
                                     spid smallint ,
                                     bl smallint )
 
        if @@ERROR <> 0 
            return @@ERROR
 
        insert into #tmp_lock_who ( spid, bl )
                select 0, blocked
                    from ( select *
                            from sysprocesses
                            where blocked > 0 ) a
                    where not exists ( select *
                                        from ( select *
                                                from sysprocesses
                                                where blocked > 0 ) b
                                        where a.blocked = spid )
                union
                select spid, blocked
                    from sysprocesses
                    where blocked > 0
 
        if @@ERROR <> 0 
            return @@ERROR
 
 -- 找到临时表的记录数
        select @intCountProperties = count(*), @intCounter = 1
            from #tmp_lock_who
 
        if @@ERROR <> 0 
            return @@ERROR
 
        while @intCounter <= @intCountProperties 
            begin
         -- 取第一条记录
                select @spid = spid, @bl = bl
                    from #tmp_lock_who
                    where Id = @intCounter
                begin
                    if @spid = 0 
                        begin
                            set @sSql = 'kill ' + cast(@bl as varchar(10))
                            exec sp_executesql @sSql
                        end
                end
  
  -- 循环指针下移
                set @intCounter = @intCounter + 1
            end
 
        drop table #tmp_lock_who
        set NOCOUNT off
        return 0
    end

GO

转载于:https://my.oschina.net/mikezhang/blog/84268

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值