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就可以使用更多的查詢。
以便於您定位阻塞的程序。
希望對您有幫助。
您可能感興趣文章的: