sys.dm_exec_sessions (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric のSQL エンドポイント、Microsoft Fabric の Warehouse

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

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

注意

Azure Synapse Analytics または Analytics Platform System (PDW) の専用 SQL プールからこれを呼び出すには、sys.dm_pdw_nodes_exec_sessionsを参照してください。 サーバーレス SQL プールまたは Microsoft Fabric の場合は.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 (10.0.x) 以降のバージョン

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

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

実行中 - 現在 1 つ以上の要求を実行しています

スリープ 中 - 現在要求を実行していない

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

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) セッションの言語設定。 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 (10.0.x) 以降のバージョン

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

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

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

各セッションの現在のデータベースの ID。

Azure SQL Database では、値は 1 つのデータベースまたはエラスティック プール内で一意ですが、論理サーバー内では一意ではありません。
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 許可できません。

SQL Server 2022 以降のアクセス許可

サーバーに対する VIEW SERVER PERFORMANCE STATE 権限が必要です。

解説

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

  • last_successful_logon
  • last_unsuccessful_logon
  • unsuccessful_logons

このオプションが有効になっていない場合、これらの列は null 値を返します。 このサーバー構成オプションを設定する方法の詳細については、共通条件コンプライアンス対応サーバー構成オプションを参照してください

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

記録方法に違いがあるため、open_transaction_count一致sys.dm_tran_session_transactionsopen_transaction_countしない可能性があります。

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

ソース 終了 オン/適用 関係
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
INNER JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;
GO

.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
INNER JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;

次のステップ