V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
littlemis
V2EX  ›  问与答

请问 SQL Server 如何查询 Lock 时,是被哪个 SQL, IP 给锁住?

  •  
  •   littlemis · 3 天前 · 661 次点击

    请问 SQL Server 如何查询 Lock 时,是被哪个 SQL, IP 给锁住? 举例查询 select * from order where date between '2024-10-01' and '2024-10-15' Lock 了 能查到是 192.168.1.26 IP 更新 SQL update order set check_status = 'Y' between '2024-10-01' and '2024-10-02'

    6 条回复    2024-12-24 09:56:22 +08:00
    VDarker
        1
    VDarker  
       3 天前
    sql server 那个官方的管理软件就可以看
    quan01994
        2
    quan01994  
       3 天前
    USE master
    GO
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    SELECT es.session_id, es.login_name, es.host_name, est.text
    , cn.last_read, cn.last_write, es.program_name
    FROM sys.dm_exec_sessions es
    INNER JOIN sys.dm_tran_session_transactions st --系统里还存在的事务
    ON es.session_id = st.session_id
    INNER JOIN sys.dm_exec_connections cn
    ON es.session_id = cn.session_id
    CROSS APPLY sys.dm_exec_sql_text(cn.most_recent_sql_handle) est
    LEFT OUTER JOIN sys.dm_exec_requests er
    ON st.session_id = er.session_id
    AND er.session_id IS NULL

    这个可以查询当时还未提交的事务 。
    quan01994
        3
    quan01994  
       3 天前
    ip 的话 ,很难查到,除非你的 sql 注释里带了 iP
    quan01994
        4
    quan01994  
       3 天前
    或者可以区分 ,loginname, 每台机器 不同的 loginname. 这个是可以区分的 .
    littlemis
        5
    littlemis  
    OP
       3 天前
    @quan01994 明白了! 在 lock 错误时查询此表格新增到某个文件下
    littlemis
        6
    littlemis  
    OP
       3 天前
    @quan01994 谢谢您,我用 loginname=ip 来区分!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3531 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 10:28 · PVG 18:28 · LAX 02:28 · JFK 05:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.