You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关联SQL Server查询以获取最近100条执行语句的执行用户信息

最终关联查询语句

你可以直接使用下面的语句获取最近100条执行记录,包含执行时间、查询内容、执行用户名:

SELECT TOP 100
    deqs.last_execution_time AS [执行时间],
    dest.text AS [查询语句],
    sl.name AS [执行用户]
FROM
    sys.dm_exec_query_stats AS deqs
CROSS APPLY
    sys.dm_exec_sql_text(deqs.sql_handle) AS dest
-- 关联获取计划属性中的用户SID
CROSS APPLY
    sys.dm_exec_plan_attributes(deqs.plan_handle) AS pa
-- 关联SQL登录名表匹配用户名
LEFT JOIN
    sys.sql_logins AS sl ON pa.value = sl.sid
WHERE
    pa.attribute = 'suser_sid'
ORDER BY
    deqs.last_execution_time DESC

关联逻辑说明

  • 原sys.dm_exec_query_stats视图仅存储查询执行的统计信息,本身不直接存储执行用户名,需要通过sys.dm_exec_plan_attributes获取对应缓存计划的创建用户安全标识符(SID)
  • sys.dm_exec_plan_attributes中attribute字段值为suser_sid的记录对应的value字段就是执行用户的SID
  • 用这个SID和sys.sql_logins的sid字段做关联,即可匹配到对应的SQL登录用户名

注意:本查询依赖SQL Server的执行计划缓存,如果查询执行后对应计划已经被缓存淘汰,就不会出现在结果中。如果需要查询Windows身份验证的用户信息,可以将关联的sys.sql_logins替换为sys.server_principals,覆盖所有类型的服务器主体。

内容的提问来源于stack exchange,提问作者Antonio Ruud Goolit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:12:02