具體操作:
根據master.dbo.sysprocesses中的spid和blocked查找當前阻塞語句的主人,然後使用DBCC INPUTBUFFER ()查看阻塞語句。
例子:
打開三個查詢分析器 A、B、C
創建一個測試用的表 testDia
Create Table testDia(ID int);
在A執行以下語句:
Begin tran
Insert Into testDia Values(1);
在B執行以下語句:
Select * from testDia
當前情況:B中沒有顯示結果,顯示狀態為等待
在C執行以下語句:
declare @spid int, @blocked int
select top 1 @blocked = blocked
from master.dbo.sysprocesses
where blocked > 0
DBCC INPUTBUFFER (@blocked)
技術參考:
DBCC INPUTBUFFER (Transact-SQL)
顯示從客戶端發送到 Microsoft SQL Server 2005 實例的最後一個語句。
DBCC INPUTBUFFER ( session_id [ , request_id ] )
[WITH NO_INFOMSGS ]
session_id
與各活動主連接關聯的會話 ID。
request_id
要在當前會話中精確搜索的請求(批)。
下面的查詢返回 request_id:
復制代碼
SELECT request_id
FROM sys.dm_exec_requests
WHERE session_id = @@spidWITH
啟用要指定的選項。
NO_INFOMSGS
取消嚴重級別從 0 到 10 的所有信息性消息。