次の方法で共有


sys.dm_exec_connections (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

データベース エンジンのこのインスタンスに対して確立された接続に関する情報と、各接続の詳細を返します。 SQL Server と Azure SQL Managed Instance のサーバー全体の接続情報を返します。 Azure SQL Database の現在のデータベースの接続情報を返します。 Azure SQL Database のエラスティック プール内のデータベースについて、同じエラスティック プール内のすべてのデータベースの接続情報を返します。

注意

Azure Synapse Analytics または Analytics Platform System (PDW) の専用 SQL プールからこれを呼び出すには、「sys.dm_pdw_exec_connections (Transact-SQL)」をご覧ください。 サーバーレス SQL プールまたは Microsoft Fabric の場合は、sys.dm_exec_connections を使います。

列名 データ型 説明
session_id int この接続に関連付けられたセッションの識別子。 NULL 値が許可されます。
most_recent_session_id int この接続に関連付けられた最新の要求のセッション ID。 (SOAP 接続は別のセッションで再利用できます)。NULL にできます。
connect_time datetime 接続が確立されたタイムスタンプ。 NULL 値は許可されません。
net_transport nvarchar(40) MARS が使われている場合、MARS 論理セッションに関連付けられている追加の接続ごとにセッションを返します。

注: この接続によって使われる物理的な転送プロトコルが記述されています。 NULL 値は許可されません。
protocol_type nvarchar(40) ペイロードのプロトコルの種類。 現在は、TDS ("TSQL")、"SOAP"、"データベース ミラーリング" が区別されます。 NULL 値が許可されます。
protocol_version int この接続に関連付けられたデータ アクセス プロトコルのバージョン。 NULL 値が許可されます。
endpoint_id int この接続の種類を表す識別子。 この endpoint_id を使って、sys.endpoints ビューのクエリを実行できます。 NULL 値が許可されます。
encrypt_option nvarchar(40) この接続で暗号化が有効かどうかを表すブール値。 NULL 値は許可されません。
auth_scheme nvarchar(40) この接続で使われる SQL Server または Windows 認証のスキームを指定します。 NULL 値は許可されません。
node_affinity smallint この接続が関係しているメモリ ノード。 NULL 値は許可されません。
num_reads int この接続で発生したバイト読み取りの数。 NULL 値が許可されます。
num_writes int この接続で発生したバイト書き込みの数。 NULL 値が許可されます。
last_read datetime この接続で最後に発生した読み取りのタイムスタンプ。 NULL 値が許可されます。
last_write datetime この接続で最後に発生した書き込みのタイムスタンプ。 NULL 値が許可されます。
net_packet_size int 情報とデータの転送に使用されたネットワーク パケット サイズ。 NULL 値が許可されます。
client_net_address varchar(48) このサーバーに接続するクライアントのホスト アドレス。 NULL 値が許可されます。
client_tcp_port int この接続に関連付けられたクライアント コンピューターのポート番号。 NULL 値が許可されます。

Azure SQL Database では、この列は常に NULL を返します。
local_net_address varchar(48) この接続の対象となったサーバーの IP アドレス。 TCP トランスポート プロバイダーを使用する接続の場合にのみ該当します。 NULL 値が許可されます。

Azure SQL Database では、この列は常に NULL を返します。
local_tcp_port int 接続で TCP トランスポートを使用した場合に、この接続の対象となったサーバー TCP ポート。 NULL 値が許可されます。

Azure SQL Database では、この列は常に NULL を返します。
connection_id uniqueidentifier 各接続の一意識別子。 NULL 値は許可されません。
parent_connection_id uniqueidentifier MARS セッションで使われているプライマリ接続を示します。 NULL 値が許可されます。
most_recent_sql_handle varbinary(64) この接続で実行された最新の要求の SQL ハンドル。 most_recent_sql_handle 列は、常に most_recent_session_id 列と同期されます。 NULL 値が許可されます。
pdw_node_id int 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

このディストリビューションがオンになっているノードの識別子。

アクセス許可

SQL Server と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

Azure SQL Database Basic、S0S1 サービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、またはサーバー ロール##MS_ServerStateReader##メンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

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

サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。

物理的な結合

Diagram of physical joins for sys.dm_exec_connections.

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

1 番目の要素 2 番目の要素 リレーションシップ
sys.dm_exec_sessions.session_id sys.dm_exec_connections.session_id 一対ゼロまたは一対多
sys.dm_exec_requests.connection_id sys.dm_exec_connections.connection_id 多対一
sys.dm_broker_connections.connection_id sys.dm_exec_connections.connection_id 一対一

通常は、sys.dm_exec_connections の行ごとに、それと一致する行が sys.dm_exec_sessions に 1 つあります。 ただし、システム内部セッションや Service Broker アクティブ化プロシージャなど、場合によっては、sys.dm_exec_sessions の行と一致する行が sys.dm_exec_connections にないことがあります。

MARS が使われていると、sys.dm_exec_sessions の 1 つの行に対して sys.dm_exec_connections に複数の行がある場合があります。1 つは親接続に関する行で、1 つは各 MARS 論理セッションに関する行です。 後者の行は、net_transport 列の値が Session に設定されていることでわかります。 これらの接続の 場合、sys.dm_exec_connectionsconnection_id 列の値は、処理中の MARS 要求に対する sys.dm_exec_requestsconnection_id 列の値と一致します。

次の Transact-SQL クエリでは、クエリ自体の接続に関する情報が収集されます。

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;  

次の手順

関連する概念の詳細については、次の記事を参照してください。