当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL SERVER 查询正在实行的SQL语句

MSSQL
SQL Server数据库技术(122)
SQL Server数据库技术(123)
SQL Server数据库技术(124)
SQL Server数据库技术(125)
SQL Server数据库技术(126)
SQL Server数据库技术(127)
SQL Server数据库技术(128)
SQL Server数据库技术(129)
SQL 语法参考手册
存储过程编写经验和优化措施
Sql Server实用操作小技巧集合
更改数据库中表的所属用户的两个方法
SQL SERVER中直接循环写入数据
无数据库日志文件恢复数据库方法两则
维护Sql Server中表的索引
Sql Server全文搜索中文出错的问题
利用数据库日志恢复数据到时间点的操作
SQL Server2000数据库文件损坏时如何恢复
MySQL和SQL Server,到底选择谁?
SQL特性汇总表

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 98 ::
收藏到网摘: n/a

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