sp_who (TRANSACT-SQL)sp_who (Transact-SQL)

適用対象: ○SQL Server (2008 以降) XAzure SQL Database XAzure SQL Data Warehouse XParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

現在のユーザー、セッション、およびプロセスのインスタンスに関する情報を提供、 MicrosoftMicrosoft SQL Server データベース エンジンSQL Server Database Engineします。Provides information about current users, sessions, and processes in an instance of the MicrosoftMicrosoft SQL Server データベース エンジンSQL Server Database Engine. 情報は、アイドル状態ではない、特定のユーザーに属している、または特定のセッションに属するプロセスだけを返すフィルター処理できます。The information can be filtered to return only those processes that are not idle, that belong to a specific user, or that belong to a specific session.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]  

引数Arguments

[ @loginame = ] 'login' | session ID | 'ACTIVE' 結果セットをフィルター処理に使用されます。[ @loginame = ] 'login' | session ID | 'ACTIVE' Is used to filter the result set.

ログインsysname特定のログインに属するプロセスを識別します。login is sysname that identifies processes belonging to a particular login.

セッション IDに属するセッション識別番号、SQL ServerSQL Serverインスタンス。session ID is a session identification number belonging to the SQL ServerSQL Server instance. セッション IDsmallintします。session ID is smallint.

アクティブなユーザーからの次のコマンドを待機しているセッションを除外します。ACTIVE excludes sessions that are waiting for the next command from the user.

値を指定しない場合は、インスタンスに属するすべてのセッションがレポートされます。If no value is provided, the procedure reports all sessions belonging to the instance.

リターン コードの値Return Code Values

0 (成功) または 1 (失敗)0 (success) or 1 (failure)

結果セットResult Sets

sp_who次の情報を含む結果セットを返します。sp_who returns a result set with the following information.

[列]Column データ型Data type 説明Description
spidspid smallintsmallint セッション id です。Session ID.
ecidecid smallintsmallint 特定のセッション ID に関連付けられている、指定されたスレッドの実行コンテキスト ID。Execution context ID of a given thread associated with a specific session ID.

ECID = {0、1、2、3、...n} 0 常を表しますメインまたは親スレッド、および {1、2、3、...、n}、サブスレッドを表します。ECID = {0, 1, 2, 3, ...n}, where 0 always represents the main or parent thread, and {1, 2, 3, ...n} represent the subthreads.
statusstatus nchar(30)nchar(30) プロセスの状態。Process status. 可能な値は次のとおりです。The possible values are:

休止します。dormant. SQL ServerSQL Server でセッションがリセットされています。is resetting the session.

実行しているします。running. セッションには、1 つまたは複数のバッチが実行中です。The session is running one or more batches. 複数のアクティブな結果セット (MARS) が有効にすると、セッションは、複数のバッチを実行できます。When Multiple Active Result Sets (MARS) is enabled, a session can run multiple batches. 詳細については、「複数のアクティブな結果セット (MARS) の使用」を参照してください。For more information, see Using Multiple Active Result Sets (MARS).

バック グラウンドします。background. セッションがデッドロック検出などのバック グラウンド タスクを実行中です。The session is running a background task, such as deadlock detection.

ロールバックします。rollback. セッションでトランザクション ロールバックが実行中です。The session has a transaction rollback in process.

保留中します。pending. セッションは、ワーカー スレッドが使用可能になるのを待機しています。The session is waiting for a worker thread to become available.

実行可能なします。runnable. セッションのタスクはクォンタムの取得を待機中にスケジューラの実行可能キューでです。The session's task is in the runnable queue of a scheduler while waiting to get a time quantum.

spinloopします。spinloop. セッションのタスクはスピンロックの空きを待機しています。The session's task is waiting for a spinlock to become free.

中断します。suspended. セッションが完了する I/O などのイベントを待機しています。The session is waiting for an event, such as I/O, to complete.
loginameloginame nchar(128)nchar(128) 特定のプロセスに関連付けられているログイン名です。Login name associated with the particular process.
hostnamehostname nchar(128)nchar(128) 各プロセスのホストまたはコンピューターの名前。Host or computer name for each process.
blkblk char(5)char(5) ブロック中のプロセスが存在する場合は、そのプロセスのセッション ID。Session ID for the blocking process, if one exists. 存在しない場合は、この列は 0 になります。Otherwise, this column is zero.

指定したセッション ID に関連付けられたトランザクションが、孤立した分散トランザクションによってブロックされると、この列は、ブロックの孤立したトランザクションに対して '-2' を返します。When a transaction associated with a specified session ID is blocked by an orphaned distributed transaction, this column will return a '-2' for the blocking orphaned transaction.
dbnamedbname nchar(128)nchar(128) プロセスによって使用されるデータベース。Database used by the process.
cmdcmd nchar(16)nchar(16) データベース エンジンDatabase Engine コマンド (Transact-SQLTransact-SQLステートメントでは、内部データベース エンジンDatabase Engineプロセスが、)、プロセスを実行します。command (Transact-SQLTransact-SQL statement, internal データベース エンジンDatabase Engine process, and so on) executing for the process.
request_idrequest_id intint 特定のセッションで実行されている要求の ID。ID for requests running in a specific session.

特定のセッション ID に対してサブスレッドが生成並列処理の場合In case of parallel processing, subthreads are created for the specific session ID. メイン スレッドは spid = <xxx> および ecid =0 のように示されます。The main thread is indicated as spid = <xxx> and ecid =0. その他のサブスレッドが同じであるspid = <xxx>、ですが、 ecid > 0。The other subthreads have the same spid = <xxx>, but with ecid > 0.

コメントRemarks

排他ロックがあります、ブロックしているプロセスは、別のプロセスが必要なリソースを保持している 1 つ。A blocking process, which may have an exclusive lock, is one that is holding resources that another process needs.

孤立したすべての分散トランザクションにセッション ID 値 '-2' が割り当てられます。All orphaned distributed transactions are assigned the session ID value of '-2'. 孤立した分散トランザクションとは、どのセッション ID にも関連付けられていない分散トランザクションです。Orphaned distributed transactions are distributed transactions that are not associated with any session ID. 詳細については、「 マークされたトランザクションを使用して関連するデータベースを一貫した状態に復元する方法 (完全復旧モデル)」を参照してください。For more information, see Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

クエリ、 is_user_processユーザー プロセスからシステム プロセスを分離する sys.dm_exec_sessions の列。Query the is_user_process column of sys.dm_exec_sessions to separate system processes from user processes.

アクセス許可Permissions

SQL ServerSQL Server インスタンスで実行されているすべてのセッションを確認するには、サーバーに対する VIEW SERVER STATE 権限が必要です。Requires VIEW SERVER STATE permission on the server to see all executing sessions on the instance of SQL ServerSQL Server. 権限がない場合、ユーザーは現在のセッションだけを確認できます。Otherwise, the user sees only the current session.

使用例Examples

A.A. 現在のすべてのプロセスを一覧表示するListing all current processes

次の例ではsp_whoすべて現在のユーザーをレポートにパラメーターを指定せずします。The following example uses sp_who without parameters to report all current users.

USE master;  
GO  
EXEC sp_who;  
GO  

B.B. 特定のユーザーのプロセスを一覧表示するListing a specific user's process

次の例では、ログイン名を使用して、現在のユーザーに関する情報を表示します。The following example shows how to view information about a single current user by login name.

USE master;  
GO  
EXEC sp_who 'janetl';  
GO  

C.C. すべてのアクティブ プロセスを表示します。Displaying all active processes

USE master;  
GO  
EXEC sp_who 'active';  
GO  

D.D. セッション ID で識別される特定のプロセスを表示します。Displaying a specific process identified by a session ID

USE master;  
GO  
EXEC sp_who '10' --specifies the process_id;  
GO  

参照See Also

sp_lock (です。TRANSACT-SQL と)です。 sp_lock (Transact-SQL)
sys.sysprocesses (TRANSACT-SQL) sys.sysprocesses (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)System Stored Procedures (Transact-SQL)