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

SQL Server如何查看近一周历史执行的SELECT查询语句

SQL Server历史查询记录提取方案

查询不到历史SELECT记录的原因

你当前使用的sys.dm_exec_query_stats属于内存级动态管理视图,存储的查询统计数据仅保留在SQL Server计划缓存中,以下任意场景都会导致历史记录被清除:

  • SQL Server实例重启
  • 服务器内存压力触发计划缓存自动回收
  • 查询计划到期被系统自动移除
  • 手动执行了计划缓存清理操作
    因此你只能查询到近期仍留在缓存中的记录,无法获取更早的SELECT语句属于正常现象。

你提交的查询语法修正

你提供的第一段查询存在语法错误,排序子句缺少指定字段,修正后可正常查询当前计划缓存中的记录:

SELECT  dest.text, deqs.creation_time
FROM    sys.dm_exec_query_stats AS deqs
        CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.creation_time ASC

可长期提取历史查询记录的工具/方法

  • 查询存储(Query Store)
    SQL Server 2016及以上版本内置功能,数据持久化存储在磁盘中,开启后可自动留存所有执行过的查询语句(含SELECT)和对应的执行统计、执行计划,支持按时间范围筛选查询历史,是官方首推的查询历史追踪方案。
    开启参考语句:
    ALTER DATABASE [你的数据库名称] SET QUERY_STORE = ON;
    
  • 扩展事件(Extended Events)
    SQL Server轻量级追踪工具,性能损耗极低,可自定义配置捕获所有SELECT、事务类查询,支持将追踪结果持久化存储到本地文件,可按需配置日志保留周期,适合长期追踪查询历史。
  • SQL Server审计(SQL Server Audit)
    基于安全策略的审计功能,可精准配置需要捕获的查询类型、操作对象,审计日志可存储到本地文件或Windows安全日志,满足合规场景下的历史查询回溯需求。
  • SQL Trace(已弃用,仅兼容老版本)
    SQL Server 2016之前版本可用的追踪方案,可捕获所有执行的SQL语句并存储为trace文件,性能损耗高于扩展事件,仅建议低版本环境临时使用。

注意事项

如果之前没有提前开启上述任意一种持久化追踪功能,已经被从计划缓存中清除的历史SELECT查询记录无法再恢复,需先配置对应追踪工具后才能留存后续的查询历史。

内容的提问来源于stack exchange,提问作者Ryan Ternier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:27:02