通常我們可以使用
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就可以使用更多的查詢。
以便於您定位阻塞的進程。
希望對您有幫助。
您可能感興趣文章的:
幾個有用的T-SQL(1)
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發布在我的獨立博客中-Petter Liu Blog。
