[轉帖]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就可以使用更多的查詢。
  以便於您定位阻塞的進程。

  希望對您有幫助。

 
  您可能感興趣文章的:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章