• sql server 查看锁表SQL【转】


    1、select * from sys.dm_tran_locks或sp_LOCK 查看request_node 字段中为'X'(排他锁)或'IX'(意向排他锁)
    2、用sp_who2 + pid(进程ID) 查看进程的详细信息
    3、用dbcc inputbuffer(pid) 查看一起死锁的语句内容


     发生阻塞时,透过以下命令,可看出是哪个进程 session id,阻塞了哪几个进程 session id,且期间经过了多少「毫秒 (ms)」。如下图 3 里 session id = 53 阻塞了 session id = 52 的进程。另透过 SQL Server Profiler 工具,也能看到相同的内容。

    SELECT blocking_session_id, wait_duration_ms, session_id FROM sys.dm_os_waiting_tasks 

     

    图 3 本帖前述会话 A 的 UPDATE 语句 (53),阻塞了会话 B 的 SELECT 语句 (52)

    透过以下两个命令,我们还能看到整个数据库的锁定和阻塞详细信息:

    SELECT * FROM sys.dm_tran_locks

    EXEC sp_lock

    图 4 session id = 52 的 process 因阻塞而一直处于等待中 (WAIT)

    另透过 KILL 命令,可直接杀掉造成阻塞的 process,如下:

    KILL 53

    ==================================================================
    
    

    sp_lock–查询哪个进程锁表了,spid:进程ID,ObjId:对象ID 
    EXEC sp_executesql N'KILL [spid]'–杀进程 
    select object_name([ObjId])–查询哪张表被锁,找到其中的objId不为0的那个

    – 使用sql语句进行查看 ,锁定的表名 
    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName 
    from sys.dm_tran_locks where resource_type='OBJECT'

    spid 锁表进程 
    tableName 被锁定的表名

  • 相关阅读:
    LinkedHashMap源码学习
    HashMap源码学习
    Java中"或"运算与"与"运算快慢的三三两两
    Java源码记录
    SpringBoot系列随笔
    分布式事物
    分布式事物
    部署spring boot + Vue遇到的坑(权限、刷新404、跨域、内存)
    一次使用存储过程游标遇到的坑
    UML简单介绍—类图详解
  • 原文地址:https://www.cnblogs.com/Thenext/p/10235733.html
Copyright © 2020-2023  润新知