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

前端之家收集整理的这篇文章主要介绍了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 的所有信息性消息。

原文链接:https://www.f2er.com/mssql/64396.html

猜你在找的MsSQL相关文章