找出SQL Server上的查询中获取的锁?

Tom*_*mas 8 sql t-sql sql-server sql-server-2005

我的应用程序中有一条SQL语句.我想知道该声明获得了哪些锁; 我怎么能用SQL服务器呢?该声明涉及僵局,我正在试图分析; 我无法重现死锁.我在MS SQL Server 2005上运行.

And*_*mar 5

您可以在事务中运行该语句,但不能提交该事务。由于这些锁将一直保留到提交事务为止,因此这使您有时间检查锁。(不是无限期的,而是默认为5分钟。)

喜欢:

BEGIN TRANSACTION
select * from table
Run Code Online (Sandbox Code Playgroud)

然后打开Management Studio并检查锁。它们位于管理->活动监视器->按对象锁定或按进程锁定。完成后,运行:

COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)

释放锁。


Joh*_*som 3

我建议您在第一个实例中打开死锁检测跟踪标志,而不是无限期地运行探查器跟踪。

这样,事件详细信息将记录到 SQL Server 错误日志中。

有关各种跟踪标志的详细信息,请查看以下联机丛书参考。您需要使用 1204 和/或 1222

http://msdn.microsoft.com/en-us/library/ms188396(SQL.90).aspx

请务必启用服务器范围内的跟踪标志,而不仅仅是当前会话。例如使用:

DBCC TRACEON(1222,-1)
Run Code Online (Sandbox Code Playgroud)