SQL Server简洁查询正在运行的进程SQL

通常我们可以使用

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.[Text] AS [TextData],
         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 [current_cmd]
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.[text];

        您可能注意到过滤了spid小于50的,这里有TextData,Current_cmd两列,可以列出当前DataBase执的SQL文本,当然您拿到spid就可以使用更多的查询。 

      以便于您定位阻塞的进程。

你可能感兴趣的:(SQL Server简洁查询正在运行的进程SQL)