知方可補不足~sqlserver中使用sp_who查看sql的進程


回到目錄

在SQLSERVER中每個會話,即每個查詢分析器窗口都會產生一個SQL進程,對於那些持續時間短的進程,它們轉瞬即失,而對於持續時間比較長的,我們需要希望查看它的運行狀態,就可以借助SQL提供的sp_who命令,下面是對它的具體介紹,主要選自MSDN.

sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]
你可以在sp_who后面加你的SPID號(sessionID),登陸名,線程狀態等


下面對status執行狀態作一個簡單的說明,選自MSDN

background會話正在運行一個后台任務,例如死鎖檢測。

rollback: 會話具有正在處理的事務回滾。

pending: 會話正在等待工作線程變為可用。

runnable: 會話的任務在等待獲取時間量程時位於計划程序的可運行隊列中。

spinloop: 會話的任務正在等待調節鎖變為可用。

suspended: 會話正在等待事件(如 I/O)完成。

注意:如果你的代碼處理數據比較大,SQL會創建子線程進行並行處理,子線程的標示為ecid。

別外,如果希望查看SQL進程的詳細信息,可以使用下面代碼

SELECT * FROM sys.sysprocesses

查看被鎖住的對象,可以使用下面代碼

SELECT * FROM sys.syslockinfo

 如果希望查看指定會話(SQL進程)的語句(從客戶端發過來的SQL語句),可以使用下面語句

dbcc inputbuffer(Session_ID)

如果希望查看正在被阻塞的語句(sysprocesses的blocked),可以使用下面語句

dbcc inputbuffer(Blocked)

 

回到目錄


免責聲明!

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



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