Transact-SQL參考:sp_who

Transact-SQL 參考


sp_who




提供關於當前 Microsoft® SQL Server™ 用戶和進程的信息。可以篩選返回的信息,以便只返回那些不是空閒的進程。

語法

sp_who [[@login_name ='login']

參數

[@login_name ='login'

是 SQL Server 上的用戶登錄名。login 的數據類型爲 sysname,默認值是 NULL。如果沒有指定名稱,過程將報告全部活動的 SQL Server 用戶。login 也可以是特定進程標識號碼 (SPID)。若要返回有關活動進程的信息,請指定 ACTIVEACTIVE 從報告中排除等待用戶下一個命令的進程。

返回代碼值

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

請參見

KILL

sp_lock

sysprocesses

系統存儲過程


轉自:http://www.cnblogs.com/xiurui12345/archive/2012/05/15/2501414.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章