[轉帖]SQL Server簡潔查詢正在執行的程序

济南小老虎發表於2024-04-13

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

  希望對您有幫助。

 
  您可能感興趣文章的:

相關文章