適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric
中的 SQL 分析端點Microsoft Fabric
中的倉庫Microsoft Fabric 中的 SQL 資料庫
傳回與這個資料庫引擎實例建立的連接相關信息,以及每個連接的詳細數據。 傳回 SQL Server 和 Azure SQL 受控執行個體 的伺服器範圍連線資訊。 傳回 Azure SQL 資料庫 中目前資料庫的連線資訊。 針對 Azure 中彈性集區中彈性集區中的資料庫,傳回相同彈性集區中所有資料庫的連線資訊 SQL 資料庫。
注意
若要從 Azure Synapse Analytics 或 Analytics Platform System 中的專用 SQL 集區呼叫此專案,請參閱 sys.dm_pdw_exec_connections (Transact-SQL) 。 對於無伺服器 SQL 集區或 Microsoft Fabric,請使用 sys.dm_exec_connections。
| 資料行名稱 | 資料類型 | 描述 |
|---|---|---|
| session_id | int | 識別與此聯機相關聯的會話。 可為 Null。 |
| most_recent_session_id | int | 表示與這個連接相關聯之最近要求的會話標識碼。 (SOAP 連線可以由另一個工作階段重複使用。可為 Null。 |
| connect_time | datetime | 建立連接時的時間戳。 不可為 Null。 |
| net_transport | nvarchar(40) | 使用MARS時,會針對與MARS邏輯會話相關聯的每個其他連線傳回 Session 。 注意: 描述此連線所使用的實體傳輸通訊協定。 不可為 Null。 |
| protocol_type | nvarchar(40) | 指定承載的通訊協議類型。 它目前區分 TDS (“TSQL”、“SOAP” 和 “Database Mirroring”。 可為 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 資料庫 中,此數據行一律會傳回 NULL。 |
| local_net_address | varchar(48) | 表示此連線目標伺服器上的IP位址。 僅適用於使用 TCP 傳輸提供者的連線。 可為 Null。 在 Azure SQL 資料庫 中,此數據行一律會傳回 NULL。 |
| local_tcp_port | int | 表示如果此連線是使用 TCP 傳輸的連線,則此連線的目標伺服器 TCP 連接埠。 可為 Null。 在 Azure SQL 資料庫 中,此數據行一律會傳回 NULL。 |
| connection_id | uniqueidentifier | 以唯一方式識別每個連線。 不可為 Null。 |
| parent_connection_id | uniqueidentifier | 識別MARS會話所使用的主要連線。 可為 Null。 |
| most_recent_sql_handle | varbinary(64) | 在此連接上執行之最後一個要求的 SQL 句柄。 數據行一律與數據most_recent_sql_handlemost_recent_session_id行同步。 可為 Null。 |
| pdw_node_id | int |
適用於:Azure Synapse Analytics、Analytics Platform System (PDW) 此散發節點的標識碼。 |
權限
在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE 權限。
在 Azure SQL 資料庫 Basic、S0 和 S1 服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Microsoft Entra 系統管理員帳戶,或伺服器角色的成員資格。##MS_ServerStateReader## 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE 權限或 ##MS_ServerStateReader## 伺服器角色的成員資格。
SQL Server 2022 及更新版本的權限
需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。
實體聯結
關聯性基數
| 第一個專案 | 第二個專案 | 關聯 |
|---|---|---|
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_connectionssys.dm_exec_sessions都有單一相符的數據列。 不過,在某些情況下,例如系統內部會話或 Service Broker 啟用程式,在 中 sys.dm_exec_sessions 可能有一個數據列沒有相符的數據 sys.dm_exec_connections列。
使用MARS時,中數據列可能會 sys.dm_exec_connections 有多個資料列 sys.dm_exec_sessions、父連接一個數據列,以及每個MARS邏輯會話的一個數據列。 后一個數據列可由設定為 net_transport 的數據行中的值來識別。 針對這些連線,數據行connection_id中的 sys.dm_exec_connections 值會比對進行中MARS要求之資料行中的connection_idsys.dm_exec_requests值。
範例
下列 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;
下一步
在下列文章中深入了解相關概念: