zoukankan      html  css  js  c++  java
  • 专门查看阻塞和死锁情况以及引起的SQL语句,你可以创建后,直接运行之。

    CREATE procedure sp_who_lock
    as
    begin
    declare @spid int
    declare @blk int
    declare @count int
    declare @index int
    declare @lock tinyint
    set @lock=0
    create table #temp_who_lock
    (
    id int identity(1,1),
    spid int,
    blk int
    )
    if @@error<>0 return @@error
    insert into #temp_who_lock(spid,blk)
    select 0 ,blocked
    from (select * from master..sysprocesses where blocked>0)a
    where not exists(select * from master..sysprocesses where a.blocked =spid and blocked>0)
    union select spid,blocked from master..sysprocesses where blocked>0
    if @@error<>0 return @@error
    select @count=count(*),@index=1 from #temp_who_lock
    if @@error<>0 return @@error
    if @count=0
    begin
    select '没有阻塞和死锁信息'
    return 0
    end
    while @index<=@count
    begin
    if exists(select 1 from #temp_who_lock a where id>@index and exists(select 1 from #temp_who_lock where id<=@index and a.blk=spid))
    begin
    set @lock=1
    select @spid=spid,@blk=blk from #temp_who_lock where id=@index
    select '引起数据库死锁的是: '+ CAST(@spid AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'
    select @spid, @blk
    dbcc inputbuffer(@spid)
    dbcc inputbuffer(@blk)
    end
    set @index=@index+1
    end
    if @lock=0
    begin
    set @index=1
    while @index<=@count
    begin
    select @spid=spid,@blk=blk from #temp_who_lock where id=@index
    if @spid=0
    select '引起阻塞的是:'+cast(@blk as varchar(10))+ '进程号,其执行的SQL语法如下'
    else
    select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@blk AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'
    dbcc inputbuffer(@spid)
    dbcc inputbuffer(@blk)
    set @index=@index+1
    end
    end
    drop table #temp_who_lock
    return 0
    end


    GO

  • 相关阅读:
    c# 指针unsafe/fixed -- 【一】
    Windows消息大全(转)
    Windows消息过滤
    C#预编译
    c#摄像头编程实例 (转)
    多线程按顺序执行 (转)
    定位程序集
    无需写try/catch,也能正常处理异常 (转)
    无需Try catch 的UI事件封装类
    注册表修改安全策略
  • 原文地址:https://www.cnblogs.com/yzwdli/p/5387654.html
Copyright © 2011-2022 走看看