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

      希望對您有幫助。

     
      您可能感興趣文章的:

      幾個有用的T-SQL(1)

      列出Server上5張最大的表

      更多


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發布在我的獨立博客中-Petter Liu Blog


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM