zoukankan      html  css  js  c++  java
  • SQL SERVER 查找锁信息

    通过系统的存储过程  sp_who 或 sp_who2 可以查找出所有的锁信息, 但是看不出是哪个表, 什么语句

    当使用 sp_who 或 sp_who2 查找锁信息的时候, 有个 spid 信息, 可以通过下面的语句查出相应的语句

    DBCC INPUTBUFFER (spid)

    使用这个语句, 不一定能查出信息, 能查出来, 就是执行的语句, 也有说这个是查死锁语句的。

    下面语句查死锁数

    select blocked
    from (select * from sys.sysprocesses where  blocked>0 ) a 
    where not exists(select * from (select * from sys.sysprocesses where  blocked>0 ) b 
    where a.blocked=spid)
    

     

    使用下面的语句, 可以查找出哪些表被锁,以及被锁的次数

    select tablename, COUNT(*) CNT from (
    	select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   
    	from   sys.dm_tran_locks where resource_type='OBJECT'
    ) aa group by tableName
    order by CNT desc
    

    有时候需要知道在更新或删除时,锁的是行、页或表等,可以通过下面的方式来检查

    -- 先开启一个事务
    BEGIN   TRAN 
    
    -- 执行 UPDATE 或 DELETE
    update TABLE_NAME set F1='123'
    where ID = '1'
    
    --   列出锁信息 
    EXEC   sp_lock   @@spid 
    
    -- 最后 COMMIT 或 ROLLBACK 事务
    ROLLBACK   TRAN
    

    在这个执行过程中,可以通过 sp_lock 显示当前的连接的锁, 在列出的列表中, 有一 Type 列,主锁类型了

  • 相关阅读:
    JS中null与undefined的区别
    <div> <p> <span>的用法和区别
    <img>的title和Alt有什么区别?
    null undefined NaN
    JavaScript中判断为整数的多种方式
    将博客搬至CSDN
    flex
    webpack插件url-loader使用规范
    Cordova 项目 加载不出XML文件
    pandas读取xlsx
  • 原文地址:https://www.cnblogs.com/kuku/p/8202651.html
Copyright © 2011-2022 走看看