SQLServer查看死锁

SQLServer查看死锁


if exists (
       select *
       from   sys.procedures
       where  name like '%USP_ShowLocks%'
   )
    drop procedure dbo.USP_ShowLocks
go

create procedure dbo.USP_ShowLocks
as
begin
    create table #t
    (
        req_spid     int
       ,obj_name     sysname
    )  
    
    declare @s           nvarchar(4000)
           ,@rid         int
           ,@dbname      sysname
           ,@id          int
           ,@objname     sysname  
    
    declare tb cursor  
    for
        select distinct req_spid
              ,dbname = db_name(rsc_dbid)
              ,rsc_objid
        from   master..syslockinfo
        where  rsc_type   in (4 ,5)
    
    open tb 
    fetch next from tb into @rid,@dbname,@id  
    while @@fetch_status = 0
    begin
        set @s = 'select   @objname=name   from   [' + @dbname + ']..sysobjects   where   id=@id' 
        exec sp_executesql @s
            ,N'@objname   sysname   out,@id   int'
            ,@objname out
            ,@id
        
        insert into #t
        values
          (
            @rid
           ,@objname
          )
        fetch next from tb into @rid,@dbname,@id
    end 
    close tb 
    deallocate tb  
    
    select process_id = a.req_spid
          ,databaseName = db_name(rsc_dbid)
          ,typeName = case rsc_type
                        when 1 then 'NULL   Resource(Not Use)'
                        when 2 then 'DataBase'
                        when 3 then 'File'
                        when 4 then 'Index'
                        when 5 then 'Table'
                        when 6 then 'Page'
                        when 7 then 'Key'
                        when 8 then 'Extend Disk '
                        when 9 then 'RID(Row ID)'
                        when 10 then 'Application Program'
                      end
          ,objectID = rsc_objid
          ,objectName = b.obj_name
          ,rsc_indid
    from   master..syslockinfo a
           left   join #t b on  a.req_spid = b.req_spid
    where  db_name(rsc_dbid) = 'siteweaver'

    drop table #t

    --show all locks
    SELECT request_session_id as spid, 
    ObjectName = case when resource_type='OBJECT' then OBJECT_NAME(resource_associated_entity_id) else cast(resource_associated_entity_id as varchar(200)) end
     ,*
    FROM sys.dm_tran_locks
    WHERE resource_type in('OBJECT')
    --WHERE resource_type in('KEY','PAGE','OBJECT')
    

/*  SELECT request_session_id, resource_type, resource_associated_entity_id,
    request_status, request_mode, resource_description
    FROM sys.dm_tran_locks
    where resource_type in('KEY','PAGE','OBJECT') */

end
go


/*杀掉死锁的进程*/
--kill 75
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值