sys.dm_exec_connections (Transact-SQL)

適用于: SQL Server Azure SQL DatabaseAzure SQL 受控執行個體Azure Synapse Analytics

傳回與這個資料庫引擎實例建立之連線的相關資訊,以及每個連接的詳細資料。 傳回SQL Server和Azure SQL 受控執行個體的伺服器全連線資訊。 傳回 Azure SQL Database 中目前資料庫的連線資訊。 針對 Azure SQL Database 中彈性集區中的資料庫,傳回相同彈性集區中所有資料庫的連線資訊。

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 中的專用 SQL 集區呼叫此功能,請參閱sys.dm_pdw_exec_connections (Transact-SQL) 。 針對無伺服器 SQL 集區,請使用 sys.dm_exec_connections

資料行名稱 資料類型 描述
session_id int 識別這項連接的相關工作階段。 可為 Null。
most_recent_session_id int 代表這項連接最近的相關要求的工作階段識別碼 (SOAP 連線可由另一個 session.) 為可為 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。
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 受管理執行個體上,需要 VIEW SERVER STATE 許可權。

在Azure SQL資料庫基本S0S1服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Azure Active Directory 系統管理員帳戶或伺服器角色的成員 ##MS_ServerStateReader## 資格。 在所有其他SQL Database服務目標上, VIEW DATABASE STATE 需要資料庫的許可權或伺服器角色的成員 ##MS_ServerStateReader## 資格。

實體聯結

sys.dm_exec_connections實體聯結的圖表。

關聯性基數

第一個專案 第二個專案 關聯性
sys.dm_exec_sessionssession_id sys.dm_exec_connections.session_id 一對零或一對多
sys.dm_exec_requestsconnection_id sys.dm_exec_connections.connection_id 多對一
sys.dm_broker_connectionsconnection_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_sessions 一個資料列可能會 sys.dm_exec_connections 有多個資料列、一個資料列用於父連接,以及每個 MARS 邏輯會話的一個資料列。 後者的資料列可以透過設定為Session的資料 net_transport 行中的值來識別。 針對這些連接,的 資料行 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;  

後續步驟

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