当前位置: 首页>数据库>正文

[转帖]SQL Server简洁查询正在运行的进程

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.[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就可以使用更多的查询。
  以便于您定位阻塞的进程。

  希望对您有帮助。

 




https://www.xamrdz.com/database/6j91926438.html

相关文章: