sys.dm_exec_sessions (Transact-SQL)
SQL Server での認証済みセッションごとに 1 行を返します。sys.dm_exec_sessions は、すべてのアクティブなユーザー接続と内部タスクに関する情報を示すサーバー スコープのビューです。この情報には、クライアント バージョン、クライアント プログラム名、クライアントのログイン日時、ログイン ユーザー、現在のセッション設定などが含まれます。sys.dm_exec_sessions を使用して、最初に、現在のシステムの負荷を表示して目的のセッションを特定します。その後、他の動的管理ビューまたは動的管理関数を使用して、そのセッションの詳細を参照します。
sys.dm_exec_connections、sys.dm_exec_sessions、および sys.dm_exec_requests の各動的管理ビューは、sys.sysprocesses システム テーブルにマップされます。
列名 |
データ型 |
説明 |
---|---|---|
session_id |
smallint |
アクティブな各プライマリ接続に関連付けられたセッションの識別子。NULL 値は許可されません。 |
login_time |
datetime |
セッションが確立された時刻。NULL 値は許可されません。 |
host_name |
nvarchar(128) |
セッション固有のクライアント ワークステーションの名前。内部セッションの場合、この値は NULL になります。NULL 値は許可されます。 |
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) |
セッションで Windows 認証または信頼された接続を使用している場合のクライアントの Windows ドメイン。内部セッションまたはドメイン以外のユーザーの場合、この値は NULL になります。NULL 値は許可されます。 |
nt_user_name |
nvarchar(128) |
セッションで Windows 認証または信頼された接続を使用している場合のクライアントの Windows ユーザー名。内部セッションまたはドメイン以外のユーザーの場合、この値は NULL になります。NULL 値は許可されます。 |
status |
nvarchar(30) |
セッションの状態。次の値になります。
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 値は許可されます。 |
reads |
bigint |
セッション中に、セッションの要求によって実行された読み取りの数。NULL 値は許可されません。 |
writes |
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 = ReadUncomitted 2 = ReadCommitted 3 = Repeatable 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 |
現在のセッションが開始する前に、original_login_name のログオンが最後に成功した時間。 |
last_unsuccessful_logon |
datetime |
現在のセッションが開始する前に、original_login_name のログオン試行が最後に失敗した時間。 |
unsuccessful_logons |
bigint |
last_successful_logon と login_time の間に、original_login_name のログオン試行が失敗した回数。 |
group_id |
int |
このセッションが属しているワークロード グループの ID。NULL 値は許可されません。 |
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
注 |
---|
ユーザーがサーバーに対する VIEW SERVER STATE 権限を所有している場合は、SQL Server のインスタンスで実行中のすべてのセッションが表示されます。それ以外の場合は、現在のセッションだけが表示されます。 |
説明
情報セキュリティ国際評価基準 (Common Criteria) に準拠したログイン統計
ストアド プロシージャ sp_configure を使用して [情報セキュリティ国際評価基準 (Common Criteria) への準拠を有効にする] オプションを有効にすると、次に示す sys.dm_exec_sessions の列にログイン統計が保存および表示されます。
last_successful_logon
last_unsuccessful_logon
unsuccessful_logons
このサーバー構成オプションが有効になっていない場合、これらの sys.dm_exec_sessions 列は NULL 値を返します。このサーバー構成オプションの設定方法の詳細については、「[情報セキュリティ国際評価基準 (Common Criteria) への準拠を有効にする] オプション」を参照してください。
リレーションシップの基数
関連元 |
関連先 |
基準/APPLY |
リレーションシップ |
---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests |
session_id |
一対ゼロまたは一対多 |
sys.dm_exec_sessions |
sys.dm_exec_connections |
session_id |
一対ゼロまたは一対多 |
sys.dm_exec_sessions |
sys.dm_tran_session_transactions |
session_id |
一対ゼロまたは一対多 |
sys.dm_exec_sessions |
sys.dm_exec_cursors(session_id | 0) |
session_id CROSS APPLY OUTER APPLY |
一対ゼロまたは一対多 |
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
);