Tom*_*mas 8 sql t-sql sql-server sql-server-2005
我的应用程序中有一条SQL语句.我想知道该声明获得了哪些锁; 我怎么能用SQL服务器呢?该声明涉及僵局,我正在试图分析; 我无法重现死锁.我在MS SQL Server 2005上运行.
您可以在事务中运行该语句,但不能提交该事务。由于这些锁将一直保留到提交事务为止,因此这使您有时间检查锁。(不是无限期的,而是默认为5分钟。)
喜欢:
BEGIN TRANSACTION
select * from table
Run Code Online (Sandbox Code Playgroud)
然后打开Management Studio并检查锁。它们位于管理->活动监视器->按对象锁定或按进程锁定。完成后,运行:
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
释放锁。
我建议您在第一个实例中打开死锁检测跟踪标志,而不是无限期地运行探查器跟踪。
这样,事件详细信息将记录到 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)