SQL SERVER 查询正在实行的SQL语句

具体操作:

根据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 的所有信息性消息。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐