sys.dm_exec_connections (Transact-SQL)

適用于:SQL Server (所有支援的版本) Azure SQL Database Azure 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;  

後續步驟

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