sp_who (Transact-sql)sp_who (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

のインスタンス内の現在のユーザー、セッション、およびプロセスに関する情報を提供 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.

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

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

ACTIVE は、ユーザーから次のコマンドを待機しているセッションを除外します。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.

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) が有効になっている場合、1つのセッションで複数のバッチを実行できます。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.

spinloopspinloop. セッションのタスクはスピンロックの空きを待機しています。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 EngineTransact-SQLTransact-SQL データベース エンジンDatabase Engine プロセスに対して実行されるコマンド (ステートメント、内部プロセスなど)。command (Transact-SQLTransact-SQL statement, internal データベース エンジンDatabase Engine process, and so on) executing for the process. SQL Server 2019 では、データ型が nchar (26) に変更されました。In SQL Server 2019, the data type has changed to nchar(26).
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> が、 d > 0 になります。The other subthreads have the same spid = <xxx>, but with ecid > 0.

コメントRemarks

排他ロックが設定されている可能性のあるブロックプロセスは、別のプロセスが必要とするリソースを保持しているプロセスです。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).

ユーザープロセスからシステムプロセスを分離するには、sys.dm_exec_sessions の is_user_process 列に対してクエリを実行します。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.sysプロセス (Transact-sql) sys.sysprocesses (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)System Stored Procedures (Transact-SQL)