sys.dm_exec_sessions (Transact-SQL)

適用対象:yesAzure Synapse Analytics Analytics yesPlatform System (PDW) YesAzure SQL Database yesSQL Server (サポートされているすべてのバージョン)

SQL Serverで認証されたセッションごとに 1 行を返します。 sys.dm_exec_sessions は、すべてのアクティブなユーザー接続と内部タスクに関する情報を表示するサーバー スコープ ビューです。 この情報には、クライアント バージョン、クライアント プログラム名、クライアントのログイン日時、ログイン ユーザー、現在のセッション設定などが含まれます。 最初に現在のシステム負荷を表示し、関心のあるセッションを特定し、そのセッションに関する詳細情報を、他の動的管理ビューまたは動的管理機能を使用して学習するために使用 sys.dm_exec_sessions します。

sys.dm_exec_sessionsおよびsys.dm_exec_requests動的管理ビューはsys.dm_exec_connections、非推奨の sys.sysprocesses システム互換性ビューにマップされます。

Note

Azure Synapse Analytics または Analytics Platform System (PDW) の専用SQL プールからこれを呼び出すには、sys.dm_pdw_nodes_exec_sessionsを参照してください。 サーバーレス SQL プールの場合は、sys.dm_exec_sessions を使用します。

列名 データ型 説明とバージョン固有の情報
session_id smallint アクティブな各プライマリ接続に関連付けられたセッションを識別します。 NULL 値は許可されません。
login_time datetime セッションが確立された時刻。 NULL 値は許可されません。 この DMV のクエリが実行された時点でログインが完了していないセッションは、ログイン時刻 1900-01-01として表示されます。
host_name nvarchar(128) セッション固有のクライアント ワークステーションの名前。 内部セッションの場合、この値は NULL になります。 NULL 値が許可されます。

セキュリティ上の注意: クライアント アプリケーションはワークステーション名を提供し、不正確なデータを提供する可能性があります。 HOST_NAME はセキュリティ機能としては期待しないでください。
program_name nvarchar(128) セッションを開始したクライアント プログラムの名前。 内部セッションの場合、この値は NULL になります。 NULL 値が許可されます。
host_process_id int セッションを開始したクライアント プログラムのプロセス ID。 内部セッションの場合、この値は NULL になります。 NULL 値が許可されます。
client_version int クライアントでサーバーへの接続に使用されるインターフェイスの TDS プロトコル バージョン。 内部セッションの場合、この値は NULL になります。 NULL 値が許可されます。
client_interface_name nvarchar(32) クライアントがサーバーとの通信に使用するライブラリ/ドライバーの名前。 内部セッションの場合、この値は NULL になります。 NULL 値が許可されます。
security_id varbinary(85) ログインに関連付けられた、Microsoft Windows のセキュリティ ID。 NULL 値は許可されません。
login_name nvarchar(128) 現在セッションを実行している SQL Server ログイン名。 セッションを作成した元のログイン名については、original_login_name を参照してください。 SQL Server認証済みログイン名またはWindows認証済みドメイン ユーザー名を指定できます。 NULL 値は許可されません。
nt_domain nvarchar(128) 適用対象: SQL Server 2008 以降。

セッションで Windows 認証または信頼された接続を使用している場合のクライアントの Windows ドメイン。 この値は、内部セッションと非ドメイン ユーザーの場合は NULL です。 NULL 値が許可されます。
nt_user_name nvarchar(128) 適用対象: SQL Server 2008 以降。

セッションで Windows 認証または信頼された接続を使用している場合のクライアントの Windows ユーザー名。 この値は、内部セッションと非ドメイン ユーザーの場合は NULL です。 NULL 値が許可されます。
status nvarchar(30) セッションの状態。 指定できる値

Running - 現在 1 つ以上の要求を実行中です。

Sleeping - 現在要求を実行していません。

休止 状態 - 接続プールが原因でセッションがリセットされ、プレログイン状態になりました。

Preconnect - セッションはリソース ガバナー分類子内にあります。

NULL 値は許可されません。
context_info varbinary (128) セッションの CONTEXT_INFO 値。 コンテキスト情報は、 SET CONTEXT_INFO ステートメントを使用してユーザーによって設定されます。 NULL 値が許可されます。
cpu_time int セッションで使用された CPU 時間 (ミリ秒単位)。 NULL 値は許可されません。
memory_usage int セッションで使用されたメモリの 8 KB ページの数。 NULL 値は許可されません。
total_scheduled_time int セッション (内の要求) の実行がスケジュールされた合計時間 (ミリ秒単位)。 NULL 値は許可されません。
total_elapsed_time int セッションが確立されてから経過した時間 (ミリ秒単位)。 NULL 値は許可されません。
endpoint_id int セッションに関連付けられたエンドポイント ID。 NULL 値は許可されません。
last_request_start_time datetime セッションで要求が最後に開始された時刻。 現在実行されている要求も対象となります。 NULL 値は許可されません。
last_request_end_time datetime セッションで要求が最後に完了した時刻。 NULL 値が許可されます。
読み取り bigint セッション中に、セッションの要求によって実行された読み取りの数。 NULL 値は許可されません。
書き込み bigint セッション中に、セッションの要求によって実行された書き込みの数。 NULL 値は許可されません。
logical_reads bigint このセッションで実行された論理読み取りの数。 NULL 値は許可されません。
is_user_process bit セッションがシステム セッションの場合は 0。 それ以外の場合は 1 です。 NULL 値は許可されません。
text_size int セッションの TEXTSIZE 設定。 NULL 値は許可されません。
language nvarchar(128) セッションの LANGUAGE 設定。 NULL 値が許可されます。
date_format nvarchar(3) セッションの DATEFORMAT 設定。 NULL 値が許可されます。
date_first smallint セッションの DATEFIRST 設定。 NULL 値は許可されません。
quoted_identifier bit セッションの QUOTED_IDENTIFIER 設定。 NULL 値は許可されません。
arithabort bit セッションの ARITHABORT 設定。 NULL 値は許可されません。
ansi_null_dflt_on bit セッションの ANSI_NULL_DFLT_ON 設定。 NULL 値は許可されません。
ansi_defaults bit セッションの ANSI_DEFAULTS 設定。 NULL 値は許可されません。
ansi_warnings bit セッションの ANSI_WARNINGS 設定。 NULL 値は許可されません。
ansi_padding bit セッションの ANSI_PADDING 設定。 NULL 値は許可されません。
ansi_nulls bit セッションの ANSI_NULLS 設定。 NULL 値は許可されません。
concat_null_yields_null bit セッションの CONCAT_NULL_YIELDS_NULL 設定。 NULL 値は許可されません。
transaction_isolation_level smallint セッションのトランザクション分離レベル。

0 = Unspecified

1 = ReadUncommitted

2 = ReadCommitted

3 = RepeatableRead

4 = Serializable

5 = Snapshot

NULL 値は許可されません。
lock_timeout int セッションの LOCK_TIMEOUT 設定。 値の単位はミリ秒です。 NULL 値は許可されません。
deadlock_priority int セッションの DEADLOCK_PRIORITY 設定。 NULL 値は許可されません。
row_count bigint セッションでこの時点までに返された行の数。 NULL 値は許可されません。
prev_error int セッションで最後に返されたエラーの ID。 NULL 値は許可されません。
original_security_id varbinary(85) original_login_nameに関連付けられている Microsoft Windows セキュリティ ID。 NULL 値は許可されません。
original_login_name nvarchar(128) クライアントがこのセッションの作成に使用したログイン名をSQL Serverします。 SQL Server認証済みログイン名、Windows認証済みドメイン ユーザー名、包含データベース ユーザーを指定できます。 最初の接続後、セッションでは暗黙的または明示的にコンテキストが切り替えられている可能性があります。 たとえば、 EXECUTE AS が使用されている場合です。 NULL 値は許可されません。
last_successful_logon datetime 適用対象: SQL Server 2008 以降。

現在のセッションが開始する前に、original_login_name のログオンが最後に成功した時間。
last_unsuccessful_logon datetime 適用対象: SQL Server 2008 以降。

現在のセッションが開始する前に、original_login_name のログオン試行が最後に失敗した時間。
unsuccessful_logons bigint 適用対象: SQL Server 2008 以降。

last_successful_logon と login_time の間に、original_login_name のログオン試行が失敗した回数。
group_id int このセッションが属しているワークロード グループの ID。 NULL 値は許可されません。
database_id smallint 適用対象: SQL Server 2012 (11.x) 以降。

各セッションの現在のデータベースの ID。
authenticating_database_id int 適用対象: SQL Server 2012 (11.x) 以降。

プリンシパルを認証するデータベースの ID。 ログインの場合、値は 0 になります。 包含データベース ユーザーの場合、値は包含データベースのデータベース ID になります。
open_transaction_count int 適用対象: SQL Server 2012 (11.x) 以降。

セッションごとに開いているトランザクションの数。
pdw_node_id int 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

このディストリビューションがオンになっているノードの識別子。
page_server_reads bigint 適用対象: Azure SQL Database Hyperscale

このセッション中に、このセッションの要求によって実行されたページ サーバーの読み取りの数。 NULL 値は許可されません。

アクセス許可

誰もが自分のセッション情報を見ることができます。
SQL Server: サーバー上のすべてのセッションを表示するには、SQL Serverに対するアクセス許可が必要VIEW SERVER STATEです。
SQL Database: 現在のデータベースへのすべての接続を表示する必要がありますVIEW DATABASE STATEVIEW DATABASE STATE データベースに master 付与できません。

解説

共通基準コンプライアンス対応サーバー構成オプションが有効になっている場合は、ログオン統計が次の列に表示されます。

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

このオプションが有効でない場合、これらの列は NULL 値を返します。 このサーバー構成オプションを設定する方法の詳細については、「 一般的な条件の準拠が有効なサーバー構成オプション」を参照してください。

Azure SQL Databaseの管理者接続には、認証されたセッションごとに 1 行が表示されます。 結果セットに表示される "sa" セッションは、セッションのユーザー クォータに影響しません。 管理者以外の接続には、データベース ユーザー セッションに関連する情報のみが表示されます。

リレーションシップカーディナリティ

ソース 終了 オン/適用 リレーションシップ
sys.dm_exec_sessions sys.dm_exec_requests session_id 1 対 0 または 1 対多
sys.dm_exec_sessions sys.dm_exec_connections session_id 1 対 0 または 1 対多
sys.dm_exec_sessions sys.dm_tran_session_transactions session_id 1 対 0 または 1 対多
sys.dm_exec_sessions sys.dm_exec_cursors(session_id | 0) session_id CROSS APPLY

OUTER APPLY
1 対 0 または 1 対多
sys.dm_exec_sessions sys.dm_db_session_space_usage session_id 一対一

A. サーバーに接続されているユーザーの検索

次の例では、サーバーに接続されているユーザーを検索し、各ユーザーのセッション数を返します。

SELECT login_name ,COUNT(session_id) AS session_count   
FROM sys.dm_exec_sessions   
GROUP BY login_name;  

B. 長時間実行されているカーソルを検索する

次の例では、特定の期間よりも長く開いているカーソル、カーソルの作成者、およびカーソルが配置されているセッションを検索します。

USE master;  
GO  
SELECT creation_time ,cursor_id   
    ,name ,c.session_id ,login_name   
FROM sys.dm_exec_cursors(0) AS c   
JOIN sys.dm_exec_sessions AS s   
   ON c.session_id = s.session_id   
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;  

C. トランザクションが開いているアイドル状態のセッションを検索する

次の例では、開いているトランザクションがあり、アイドル状態のセッションを検索します。 アイドル状態のセッションとは、現在要求が実行されていないセッションです。

SELECT s.*   
FROM sys.dm_exec_sessions AS s  
WHERE EXISTS   
    (  
    SELECT *   
    FROM sys.dm_tran_session_transactions AS t  
    WHERE t.session_id = s.session_id  
    )  
    AND NOT EXISTS   
    (  
    SELECT *   
    FROM sys.dm_exec_requests AS r  
    WHERE r.session_id = s.session_id  
    );  

D. クエリ独自の接続に関する情報の検索

クエリ独自の接続に関する情報を収集する一般的なクエリ。

SELECT   
    c.session_id, c.net_transport, c.encrypt_option,   
    c.auth_scheme, s.host_name, s.program_name,   
    s.client_interface_name, s.login_name, s.nt_domain,   
    s.nt_user_name, s.original_login_name, c.connect_time,   
    s.login_time   
FROM sys.dm_exec_connections AS c  
JOIN sys.dm_exec_sessions AS s  
    ON c.session_id = s.session_id  
WHERE c.session_id = @@SPID;  

参照

動的管理ビューと関数 (Transact-SQL)
実行関連の動的管理ビューと関数 (Transact-SQL)