【问题标题】:how to find who locks who in SQL Server 2005如何在 SQL Server 2005 中查找谁锁定了谁
【发布时间】:2026-02-22 14:05:01
【问题描述】:

我正在开发 SQL Server 2005 SP3。从活动监视器,我注意到很多处理器被锁定在挂起模式。你知道如何找到谁锁定了我的进程吗?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    exec sp_who

    会告诉你哪些进程被其他进程阻塞。你也可以使用

    exec sp_lock
    

    查看所述阻塞进程锁定了什么。

    【讨论】:

    • 关于谁是谁在阻止游戏中的详细信息,请阅读sp_who结果中blk列的描述:msdn.microsoft.com/en-us/library/ms174313.aspx
    • 使用从 sp_who 返回的 spid 调用“DBCC INPUTBUFFER(spid)”还将显示进程运行的最后一条 sql 语句。
    • SP_WHO2 提供了比 sp_who 和 sp_lock 更多的真实世界有用信息,DBCC INPUTBUFFER(SPID) 必须与 SP_WHO2 一起使用才能查看它们正在运行的查询。
    【解决方案2】:

    SP_WHO2

    SP_WHO2 显示了 spid 的阻止和阻止以及主机名以及追踪源所需的更多有用信息。

    编辑:如果输出列表很长,请尝试 SP_WHO2 'active'

    【讨论】:

      【解决方案3】:

      除了 Ralph 的出色帖子之外,here's 还提供了一篇很好的文章,介绍了可用于监控阻塞的各种方法 - 由 Microsoft 的一位高级现场工程师撰写。

      【讨论】: