• 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 被锁定的表名

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

     转自: https://blog.csdn.net/xiangbq/article/details/48031459

  • 相关阅读:
    过度效果
    JQ 滚动图片
    清除Css中select的下拉箭头样式
    利用原生 js 模拟出 JSON.parse 和 JSON.stringify
    利用 qrcode 在图片生成二维码
    JavaScript--正则表达式
    2、less的用法
    模拟select下拉框之多选(数据源采用模拟Ajax数据--原创)
    模拟 ES6 SET 数组去重
    前端方式导入导出xlsx
  • 原文地址:https://www.cnblogs.com/railgunman/p/9581979.html
Copyright © 2020-2023  润新知