【发布时间】:2025-12-08 04:20:02
【问题描述】:
我认为这是不可能的,但我想确定一下。
有没有办法让我知道桌子何时被锁定以及锁定了多长时间?我知道我可以查看一个表当前是否被锁定,但我想有一个锁定的“历史”。
【问题讨论】:
-
相关但不欺骗:*.com/questions/296906/…
我认为这是不可能的,但我想确定一下。
有没有办法让我知道桌子何时被锁定以及锁定了多长时间?我知道我可以查看一个表当前是否被锁定,但我想有一个锁定的“历史”。
【问题讨论】:
其他回复中提到的 RedGate 工具的“免费”替代品是 MS-SQL Server Profiler(参见 SQL Server Management Studio 的工具菜单)。该工具允许您通过指定要监视和/或记录的事件类型来定义“跟踪”。甚至 [在 SQL2008 中,也可能在旧版本中] 有一个用于锁定问题的默认模板:TSQL_Locks。
请注意,分析分析器的日志可能需要一些工作/弄清楚。可以根据一组特定的标准过滤事件(以及在源头过滤这些事件,即首先从日志中排除这些事件),但 RedGate 等第三方产品可能会提供更多的易用性- 使用,更好的聚合功能等。
编辑:
(根据 Metju 的话)
上面建议的解决方案意味着人们将提前开始在分析器工具中记录与锁定相关的事件。在 MS-SQL 2005 中,至少没有任何公开记录的内容可以提供对有关锁的完整历史信息的访问,“事后”。但是,根据个人的需要,足够的洞察力可能有时可以从 SQL 活动监视器中收集(来自左侧数据库等树中的“管理”,在 Management Studio 中),尤其是“按对象锁定”视图。此信息隐含可用(无需任何设置),通常足以识别死锁和类似问题的根源。
【讨论】:
SQL Server Activity Monitor(如果您还没有这样做的话)以找出其中的一些信息,这些信息至少可以部分地让您深入了解发生的事情。
从 Red-Gate 中检查此工具。我经常用它来做这种事情。此外,它还可以让我查看长时间运行的查询和许多其他有用的信息。有最后一小时,最后一天,永远等过滤器......
【讨论】:
如果不运行监控工具(您自己的、第三方的或处理 SQL 分析器的输出),不存在。
【讨论】: