sys.dm_exec_connections (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析端點 Microsoft Fabric 中的倉儲
傳回與這個資料庫引擎實例建立的連接相關信息,以及每個連接的詳細數據。 傳回 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_handle most_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_connections
sys.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_id
sys.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;
下一步
在下列文章中深入了解相關概念: