zoukankan      html  css  js  c++  java
  • SQL 死锁进程查询

    use master
    go
    declare @spid int,@bl int
    DECLARE s_cur CURSOR FOR 
    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
    OPEN s_cur
    FETCH NEXT FROM s_cur INTO @spid,@bl
    WHILE @@FETCH_STATUS = 0
    begin
    if @spid =0 
     select '引起数据库死锁的是: 
    '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'
    else
    select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '' + '
    进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'
    DBCC INPUTBUFFER (@bl )
    FETCH NEXT FROM s_cur INTO @spid,@bl
    end
    CLOSE s_cur
    DEALLOCATE s_cur
    
    
    --死锁查询
    select 标志,
    进程ID=spid,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,
    数据库名=db_name(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,
    登陆时间=login_time,打开事务数=open_tran, 进程状态=status,
    工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,
    域名=nt_domain,网卡地址=net_address
    from(
    select 标志='死锁的进程',
    spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,
    status,hostname,program_name,hostprocess,nt_domain,net_address,
    s1=a.spid,s2=0
    from master..sysprocesses a join (
    select blocked from master..sysprocesses group by blocked
    )b on a.spid=b.blocked where a.blocked=0
    union all
    select '|_牺牲品_>',
    spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,
    status,hostname,program_name,hostprocess,nt_domain,net_address,
    s1=blocked,s2=1
    from master..sysprocesses a where blocked<>0
    )a order by s1,s2
  • 相关阅读:
    关于cmake、make、make install
    windows开启ip_forwarding功能
    最新devstack安装(ussuri)
    【rabbitmq】之业务封装
    【rabbitmq】之过期和死信队列
    【rabbitmq】之confirm和return机制
    【rabbitmq】之消费端手动ack
    java短网址服务
    详解druid打印SQL日志
    logback配置文件拆分,抽取公共配置
  • 原文地址:https://www.cnblogs.com/hbwy/p/7508758.html
Copyright © 2011-2022 走看看