Transact-SQL 參考
sp_who
提供關於當前 Microsoft® SQL Server™ 用戶和進程的信息。可以篩選返回的信息,以便只返回那些不是空閒的進程。
語法
sp_who [[@login_name =] 'login']
參數
[@login_name =] 'login'
是 SQL Server 上的用戶登錄名。login 的數據類型爲 sysname,默認值是 NULL。如果沒有指定名稱,過程將報告全部活動的 SQL Server 用戶。login 也可以是特定進程標識號碼 (SPID)。若要返回有關活動進程的信息,請指定 ACTIVE。ACTIVE 從報告中排除等待用戶下一個命令的進程。
返回代碼值
0(成功)或 1(失敗)
結果集
sp_who 返回包含以下信息的結果集。
列 | 數據類型 | 描述 |
---|---|---|
spid | smallint | 系統進程 ID。 |
ecid | smallint | 與指定 SPID 相關聯的給定線程的執行上下文 ID。
ECID = {0, 1, 2, 3, ...n},其中 0 始終表示主或父線程,並且 {1, 2, 3, ...n} 表示子線程。 |
status | nchar(30) | 進程狀態。 |
loginame | nchar(128) | 與特定進程相關聯的登錄名。 |
hostname | nchar(128) | 每個進程的主機或計算機名。 |
blk | char(5) | 如果存在阻塞進程,則是該阻塞進程的系統進程 ID。否則該列爲零。
當與給定的 spid 相關聯的事務受到孤立分佈式事務的阻塞時,該列將對阻塞孤立事務返回 '-2'。 |
dbname | nchar(128) | 進程使用的數據庫。 |
cmd | nchar(16) | 爲此進程執行的 SQL Server 命令(Transact-SQL 語句、SQL Server 內部引擎處理等)。 |
sp_who 結果集將根據 spid 值按升序排序。如果是並行處理,則會爲特定的 spid 創建子線程。主線程表示爲 spid =xxx,並且 ecid =0。其餘的子線程同樣也是 spid = xxx,但 ecid > 0。這樣,將會爲該 spid 編號返回多行 — 它們在整個列表中放置該spid 的位置組合在一起。子線程將隨機排列,但父線程除外 (ecid = 0);在該 spid 中,父線程被首先列出。
註釋
阻塞進程(可能含有排它鎖)是控制其它進程所需要的資源的進程。
在 SQL Server 2000 中,所有孤立 DTC 事務的 SPID 都被賦予值 '-2'。孤立 DTC 事務就是不與任何 SPID 相關聯的分佈式事務。這樣,當某一孤立事務阻塞其它進程時,可由其特殊的 '-2' SPID 值來識別該孤立分佈式事務。有關更多信息,請參見 KILL。
SQL Server 2000 保留從 1 到 50 的 SPID 值以便內部使用,而 51 或更大的 SPID 值則代表用戶會話。
權限
執行權限默認授予 public 角色。
示例
A. 列出全部當前進程
此示例使用沒有參數的 sp_who 報告所有當前用戶。
USE master
EXEC sp_who
下面是結果集:
spid ecid status loginame hostname blk dbname cmd ---- ---- ------ ------------ -------- --- ------ ----- 1 0 background sa 0 pubs LAZY WRITER 2 0 sleeping sa 0 pubs LOG WRITER 3 0 background sa 0 master SIGNAL HANDLER 4 0 background sa 0 pubs RA MANAGER 5 0 background sa 0 master TASK MANAGER 6 0 sleeping sa 0 pubs CHECKPOINT SLEEP 7 0 background sa 0 master TASK MANAGER 8 0 background sa 0 master TASK MANAGER 9 0 background sa 0 master TASK MANAGER 10 0 background sa 0 master TASK MANAGER 11 0 background sa 0 master TASK MANAGER 51 0 runnable DOMAIN
\loginX serverX 0 Nwind BACKUP DATABASE 51 2 runnable DOMAIN
\loginX serverX 0 Nwind BACKUP DATABASE 51 1 runnable DOMAIN
\loginX serverX 0 Nwind BACKUP DATABASE 52 0 sleeping DOMAIN
\loginX serverX 0 master AWAITING COMMAND 53 0 runnable DOMAIN
\loginX serverX 0 pubs SELECT (16 row(s) affected)
B. 列出特定用戶的進程
此示例顯示如何通過登錄名查看有關單個當前用戶的信息。
USE master
EXEC sp_who 'janetl'
C. 顯示所有活動進程
USE master
EXEC sp_who 'active'
D. 通過進程 ID 顯示特定進程
USE master
EXEC sp_who '10' --specifies the process_id
請參見
轉自:http://www.cnblogs.com/xiurui12345/archive/2012/05/15/2501414.html