sys.dm_exec_connections (Transact-SQL)

適用于: Microsoft Fabric 中 Microsoft Fabric 倉儲中的 Sql Server Azure 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。
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 權限。

實體聯結

Diagram of physical joins for sys.dm_exec_connections.

關聯性基數

第一個專案 第二個專案 關聯
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 邏輯會話的一個資料列。 後一個資料列可由設定為 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;  

下一步

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