SQL Server简洁查询正在运行的进程
通常我们可以使用sp_who2
我们希望更加简洁的信息,下面这个查询使用系统表sys.sysprocesses,以及sys.dm_exec_sql_text做OUTER APPLY. T-SQL是这样的:
SELECT spid,
blocked,
DB_NAME(sp.dbid) AS DBName,
program_name,
waitresource,
lastwaittype,
sp.loginame,
sp.hostname,
a. AS ,
SUBSTRING(A.text, sp.stmt_start / 2,
(CASE WHEN sp.stmt_end = -1 THEN DATALENGTH(A.text) ELSE sp.stmt_end
END - sp.stmt_start) / 2) AS
FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS A
WHERE spid > 50
ORDER BY blocked DESC, DB_NAME(sp.dbid) ASC, a.;
您可能注意到过滤了spid小于50的,这里有TextData,Current_cmd两列,可以列出当前DataBase执的SQL文本,当然您拿到spid就可以使用更多的查询。
以便于您定位阻塞的进程。
希望对您有帮助。
您可能感兴趣文章的:
几个有用的T-SQL(1)
列出Server上5张最大的表
更多
作者:Petter Liu
出处:http://www.iyunv.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。
页:
[1]