用SQLSERVER查询正在实行的SQL的方法

具体操作:

用SQLSERVER查询正在实行的SQL的方法

根据rocesses中的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 rocesses

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 _exec_requests

WHERE session_id = @@spidWITH

启用要指定的选项。

NO_INFOMSGS

取消严重级别从 0 到 10 的所有信息性消息。