sys.dm_exec_sessions (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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_logon login_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 STATE
。 VIEW 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_transactions
open_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;