2009-11-24 85 views
1

我想这是不可能的,但我想确保。SQL Server锁定表

有我知道当一个表被锁定,并且可能持续多久的方法吗?我知道我可以看到一张桌子是否被锁定,但我想要有一个“锁定历史”。

+0

相关但没有**愚蠢:http://stackoverflow.com/questions/296906/log-table-access-using-sql-server-profiler – 2009-11-24 15:31:00

回答

4

一个“自由”的替代其他回应中提到的展鹏工具,是MS-SQL Server Profiler中(见SQL Server Management Studio的工具菜单)。该工具可让您通过指定您希望监视和/或记录的事件类型来定义“痕迹”。甚至有[在SQL2008中,也许在旧版本中]锁定问题的默认模板:TSQL_Locks

当心分析Profiler的日志可能需要一些工作/搞清楚。可以根据特定的标准过滤事件(以及从源头过滤这些事件,即首先从日志中排除这些事件),但第三方产品(如RedGate的)可能会提供更多的易用性次使用,更好的聚合功能等

编辑
(以下Metju此言) 上述解决方案的建议,意味着人们将开始在Profiler工具提前记录锁定相关的事件。在MS-SQL 2005中没有任何东西,至少没有公开记录,它将提供有关锁的完整历史信息的访问权限,“postjoro”。但是,根据一个人的需求,足够的洞察力可以有时可以从SQL活动监视器聚集(从数据库的“管理”等树的左侧,在Management Studio),特别是“锁定的对象”视图。这种隐含可用的信息(不需要任何设置)通常足以识别死锁的起源和类似问题。

+0

所以唯一的办法是我创造我自己的审计并且从现在起有记录,2005年没有建立审计? 我其实需要这个,因为出现了一些事情,我们需要知道发生了什么。 非常感谢 – 2009-11-24 15:40:46

+2

警惕,虽然 - 跟踪锁活动时就可以得到“命中”了很多。 – 2009-11-24 15:42:20

+0

Right-on,Phillip,当我添加一段关于过滤和有限聚合功能的小段落时,我一直在思考相同的问题。 – mjv 2009-11-24 15:46:18

2

检查从红门这个工具出来。正是这种东西,我使用它非常多。此外,它让我检查长时间运行的查询和其他有用的信息。有去年小时过滤,最后一天,永远等..

RedGate SQL Response

1

没有运行的监控工具(滚你自己的,第三方的,或处理SQL事件探查器的输出),没有没有。