分享方式:


sys.dm_exec_connections (Transact-SQL)

適用於:Microsoft Fabric Microsoft網狀架構倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics 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_connections實體聯結的圖表。

關聯性基數

第一個專案 第二個專案 關聯
sys.dm_exec_sessionssession_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邏輯會話的一個數據列。 后一個數據列可由設定為 Session 的數據行中的net_transport值來識別。 針對這些連線,數據行sys.dm_exec_connections中的 connection_id 值會比對進行中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;  

下一步

在下列文章中深入了解相關概念: