sys.dm_pdw_exec_sessions(Transact-SQL)

适用于:Azure Synapse Analytics分析平台系统 (PDW)

保存所有当前或近期开放的会议信息。 sys.dm_pdw_exec_sessions动态管理视图(DMV)每个会话列出一行。

列名 数据类型 Description 范围
session_id nvarchar(32) 当前查询的 ID 或最后一次查询运行的 ID(如果会话已终止且查询在终止时正在执行)。 此视图的键。 系统中所有会话中都是独一无二的。
status nvarchar(10) 当前会话,识别该会话当前是活跃还是闲置。 对于过去的会话,会话状态可能会显示为关闭或被关闭(如果会话被强制关闭)。 ACTIVECLOSEDIDLETERMINATED
request_id nvarchar(32) 当前查询或上一次查询的ID。 在系统中的所有请求中唯一。 NULL 如果没有运行过。
security_id varbinary(85) 负责会话的负责人的安全ID。
login_name nvarchar(128) 运行会话的主体登录名。 任何符合用户命名规范的字符串。
login_time datetime 用户登录并创建该会话的日期和时间。 有效 日期 为当前时间之前。
query_count int 记录该会话自创建以来运行的查询/请求次数。 大于或等于0。
is_transactional bit 捕捉会话是否正在交易中。 0 用于自动提交, 1 用于事务性。
client_id nvarchar(255) 记录会话中的客户信息。 IPv6地址表示已使用私有端点。 任何有效的字符串。
app_name nvarchar(255) 捕获连接过程中可选设置的应用名称信息。 任何有效的字符串。
sql_spid int ID栏包含封闭的SPID。

有关该视图保留的最大行信息,请参见 容量限制元数据

Permissions

需要 VIEW SERVER STATE 权限。

注解

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。 对于无服务器的 SQL 池,可以使用 sys.dm_exec_sessions

Examples

A. 活动会话

查找活跃会话的计数:

SELECT active_count = COUNT(session_Id)
FROM sys.dm_pdw_exec_sessions
WHERE status = 'ACTIVE';

B。 开放时段超过10分钟

要查找开放时间超过10分钟的会话:

SELECT *, session_duration_s = DATEDIFF (s, login_time, getdate() ) 
 FROM sys.dm_pdw_exec_sessions
 WHERE DATEDIFF (s, login_time, getdate() ) > 600; -- 10 minutes

C。 当前连接的显示会话应用/用户

查找会话信息,包括源应用、连接对象、连接来源,以及是否使用Microsoft Entra ID或SQL认证。

SELECT DISTINCT CASE 
        WHEN len(tt) = 0
            THEN app_name
        ELSE tt
        END AS application_name
    ,login_name
    ,ip_address
FROM (
    SELECT DISTINCT app_name
        ,substring(client_id, 0, CHARINDEX(':', ISNULL(client_id, '0.0.0.0:123'))) AS ip_address
        ,login_name
        ,isnull(substring(app_name, 0, CHARINDEX('-', ISNULL(app_name, '-'))), 'h') AS tt
    FROM sys.dm_pdw_exec_sessions
    ) AS a;