sys.dm_exec_connections (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Returns information about the connections established to this instance of the database engine and the details of each connection. Returns server wide connection information for SQL Server and Azure SQL Managed Instance. Returns connection information for the current database in Azure SQL Database. Returns connection information for all databases in the same elastic pool for databases in elastic pools in Azure SQL Database.

Note

To call this from dedicated SQL pool in Azure Synapse Analytics or Analytics Platform System (PDW), see sys.dm_pdw_exec_connections (Transact-SQL). For serverless SQL pool or Microsoft Fabric use sys.dm_exec_connections.

Column name Data type Description
session_id int Identifies the session associated with this connection. Is nullable.
most_recent_session_id int Represents the session ID for the most recent request associated with this connection. (SOAP connections can be reused by another session.) Is nullable.
connect_time datetime Timestamp when connection was established. Is not nullable.
net_transport nvarchar(40) When MARS is used, returns Session for each additional connection associated with a MARS logical session.

Note: Describes the physical transport protocol that is used by this connection. Is not nullable.
protocol_type nvarchar(40) Specifies the protocol type of the payload. It currently distinguishes between TDS ("TSQL"), "SOAP", and "Database Mirroring". Is nullable.
protocol_version int Version of the data access protocol associated with this connection. Is nullable.
endpoint_id int An identifier that describes what type of connection it is. This endpoint_id can be used to query the sys.endpoints view. Is nullable.
encrypt_option nvarchar(40) Boolean value to describe whether encryption is enabled for this connection. Is not nullable.

For HADR mirroring endpoints, this column always returns FALSE. Use the sys.database_mirroring_endpoints DMV instead to check if connections to a HADR mirroring endpoint are encrypted.
auth_scheme nvarchar(40) Specifies SQL Server/Windows Authentication scheme used with this connection. Is not nullable.
node_affinity smallint Identifies the memory node to which this connection has affinity. Is not nullable.
num_reads int Number of byte reads that have occurred over this connection. Is nullable.
num_writes int Number of byte writes that have occurred over this connection. Is nullable.
last_read datetime Timestamp when last read occurred over this connection. Is nullable.
last_write datetime Timestamp when last write occurred over this connection. Is nullable.
net_packet_size int Network packet size used for information and data transfer. Is nullable.
client_net_address varchar(48) Host address of the client connecting to this server. Is nullable.
client_tcp_port int Port number on the client computer that is associated with this connection. Is nullable.

In Azure SQL Database, this column always returns NULL.
local_net_address varchar(48) Represents the IP address on the server that this connection targeted. Available only for connections using the TCP transport provider. Is nullable.

In Azure SQL Database, this column always returns NULL.
local_tcp_port int Represents the server TCP port that this connection targeted if it were a connection using the TCP transport. Is nullable.

In Azure SQL Database, this column always returns NULL.
connection_id uniqueidentifier Identifies each connection uniquely. Is not nullable.
parent_connection_id uniqueidentifier Identifies the primary connection that the MARS session is using. Is nullable.
most_recent_sql_handle varbinary(64) The SQL handle of the last request executed on this connection. The most_recent_sql_handle column is always in sync with the most_recent_session_id column. Is nullable.
pdw_node_id int Applies to: Azure Synapse Analytics, Analytics Platform System (PDW)

The identifier for the node that this distribution is on.

Permissions

On SQL Server and SQL Managed Instance, requires VIEW SERVER STATE permission.

On Azure SQL Database Basic, S0, and S1 service objectives, and for databases in elastic pools, the server admin account, the Microsoft Entra admin account, or membership in the ##MS_ServerStateReader## server role is required. On all other SQL Database service objectives, either the VIEW DATABASE STATE permission on the database, or membership in the ##MS_ServerStateReader## server role is required.

Permissions for SQL Server 2022 and later

Requires VIEW SERVER PERFORMANCE STATE permission on the server.

Physical joins

Diagram of physical joins for sys.dm_exec_connections.

Relationship cardinalities

First element Second element Relationship
sys.dm_exec_sessions.session_id sys.dm_exec_connections.session_id One-to-zero or one-to-many
sys.dm_exec_requests.connection_id sys.dm_exec_connections.connection_id Many-to-one
sys.dm_broker_connections.connection_id sys.dm_exec_connections.connection_id One-to-one

Most commonly, for each row in sys.dm_exec_connections there is a single matching row in sys.dm_exec_sessions. However, in some cases such as system internal sessions or Service Broker activation procedures, there may be a row in sys.dm_exec_sessions without a matching row in sys.dm_exec_connections.

When MARS is used, there may be multiple rows in sys.dm_exec_connections for a row in sys.dm_exec_sessions, one row for the parent connection, and one row for each MARS logical session. The latter rows can be identified by the value in the net_transport column being set to Session. For these connections, the value in the connection_id column of sys.dm_exec_connections matches the value in the connection_id column of sys.dm_exec_requests for MARS requests in progress.

Examples

The following Transact-SQL query gathers information about a query's own connection.

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;  

Next steps

Learn more about related concepts in the following articles: