sys.dm_exec_connections (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric のツールハウス内の SQL 分析エンドポイント
データベース エンジンのこのインスタンスに対して確立された接続に関する情報と、各接続の詳細を返します。 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 値は許可されません。 HADR ミラーリング エンドポイントの場合、この列は常に FALSE を返します。 代わりに sys.database_mirroring_endpoints DMV を使用して、HADR ミラーリング エンドポイントへの接続が暗号化されているかどうかを確認します。 |
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、S0、S1 サービス目標、および弾性プール内のデータベースの場合サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または##MS_ServerStateReader##
サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
物理的な結合
リレーションシップのカーディナリティ
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_connections
の connection_id
列の値は、処理中の MARS 要求に対する sys.dm_exec_requests
の connection_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;
次の手順
関連する概念の詳細については、次の記事を参照してください。