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 (PDW) 中的专用 SQL 池中调用它,请参阅 sys.dm_pdw_exec_connections (Transact-SQL)。 对于无服务器 SQL 池或 Microsoft Fabric,请使用 sys.dm_exec_connections
。
列名称 | 数据类型 | 说明 |
---|---|---|
session_id | int | 标识与此连接关联的会话。 可以为 Null。 |
most_recent_session_id | int | 表示与此连接关联的最近请求的会话 ID。 (另一个会话可以重用 SOAP 连接。)可为空。 |
connect_time | datetime | 连接建立时的时间戳。 不可为 null。 |
net_transport | nvarchar(40) | 使用 MARS 时,为与 MARS 逻辑会话关联的每个附加连接返回 Session。 注意:说明了此连接使用的物理传输协议。 不可为 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。 对于 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 数据库基本、S0 和 S1 服务目标以及弹性池中的数据库,需要服务器管理员帐户、Microsoft Entra 管理员帐户或服务器角色的成员##MS_ServerStateReader##
身份。 对于所有其他 SQL 数据库服务目标,需要数据库的 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 逻辑会话。 通过将 net_transport
列中的值设置为 Session,可以识别后面的行。 对于这些连接,sys.dm_exec_connections
的 connection_id
列中的值与 sys.dm_exec_requests
的 connection_id
列中的值相匹配,用于正在进行的 MARS 请求。
示例
以下 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;
后续步骤
通过以下文章详细了解相关概念: