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 値は許可されます。

セキュリティに関する注意セキュリティに関する注意

クライアント アプリケーションから返されたワークステーション名が、必ずしも正確なデータであるとは限りません。 セキュリティ機能として 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)

セッションで Windows 認証または信頼された接続を使用している場合のクライアントの Windows ドメイン。 内部セッションまたはドメイン以外のユーザーの場合、この値は NULL になります。 NULL 値は許可されます。

nt_user_name

nvarchar(128)

セッションで Windows 認証または信頼された接続を使用している場合のクライアントの Windows ユーザー名。 内部セッションまたはドメイン以外のユーザーの場合、この値は NULL になります。 NULL 値は許可されます。

status

nvarchar(30)

セッションの状態。 次の値になります。

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

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

  • Dormant – セッションは接続プールによってリセットされたため、現在はログイン前の状態です。

  • 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 値は許可されます。

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 値は許可されません。

database_id

smallint

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

authenticating_database_id

int

プリンシパルを認証するデータベースの ID。 ログインの場合、値は 0 になります。 包含データベース ユーザーの場合、値は包含データベースのデータベース ID になります。

open_transaction_count

int

セッションごとに開いているトランザクションの数。

権限

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

注意

ユーザーがサーバーに対する VIEW SERVER STATE 権限を所有している場合は、SQL Server のインスタンスで実行中のすべてのセッションが表示されます。それ以外の場合は、現在のセッションだけが表示されます。

説明

common criteria compliance enabled サーバー構成オプションを有効にすると、次の列にログオン統計値が表示されます。

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

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

リレーションシップの基数

関連元

関連先

基準/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
    );

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)