在SQL中有時候我們需要查看現在正在SQL Server執行的命令


在SQL中有時候我們需要查看現在正在SQL Server執行的命令。在分析管理器或者Microsoft SQL Server Management Studio中,我們可以在"管理-SQL Server日志-活動監視器"中查看。今天我們主要利用master..sysprocesses系統表來查看。

先看看sysprocesses系統表的相關信息。
sysprocesses:存放有關在 Microsoft SQL Server 實例中運行的進程的信息,這些進程可以是客戶端進程或系統進程。

查詢示例:

select * from master..sysprocesses



我們看看查詢出來的列的含義。
因為該系統表的列數比較多,我們只講解比較有用的列含義。

spid--SQL Server進程的ID。

kpid--Microsoft Windows線程的ID。

dbid--當前正由進程使用的數據庫ID。

uid--執行命令的用戶ID。如果用戶數和角色數超過 32,767,則會溢出或返回 NULL。

cpu--進程的累計占用CPU的時間。

physical_io--進程的累計磁盤讀取和寫入。

memusage--當前分配給該進程的過程緩存中的頁數。一個負數,表示進程正在釋放由另一個進程分配的內存。

login_time--客戶端進程登錄到服務器的時間。對於系統進程,將存儲 SQL Server的啟動時間。

last_batch--客戶端進程上次執行遠程存儲過程調用或EXECUTE語句的時間。對於系統進程,將存儲 SQL Server 的啟動時間。

open_tran--進程的打開事務數。

status--進程ID的狀態。例如,運行或者睡眠。

sid--用戶的全局唯一標識符 (GUID)。

nt_username--進程的 Windows 用戶名(如果使用 Windows 身份驗證)或可信連接的 Windows 用戶名。

loginame 執行該進程的登錄名。



這樣,我們就可以查到所有執行命令的進程ID了,如果要查看該進程的具體的SQL語句,可以利用以下語句查看:
dbcc inputbuffer(進程號)
例如:

dbcc inputbuffer(56)



如果我們要終止(殺死)該進程,可利用以下語句:
kill 進程號
例如:

kill 70


免責聲明!

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



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