如何在SQL Server Management Studio及SSMS 2008 R2中查看SQL查询历史?
在SSMS 2008 R2中查看特定数据库的查询历史
默认情况下SQL Server不会自动持久化保存所有执行过的查询历史,“管理”下的SQL Server日志仅记录实例级事件(如启动、错误、备份操作等),不会记录具体的用户查询语句。要追溯特定数据库上的UPDATE操作历史,需根据场景选择以下方法:
一、针对已执行过的操作(事后追溯)
如果未提前配置监控,仅能尝试查询计划缓存获取最近执行的查询,但结果不保证能找到目标操作:
执行以下SQL语句,替换你的数据库名和你的表名:
SELECT dest.text AS [执行的SQL语句], deqs.last_execution_time AS [最后执行时间], d.name AS [数据库名] FROM sys.dm_exec_query_stats deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) dest JOIN sys.databases d ON dest.dbid = d.database_id WHERE d.name = '你的数据库名' AND dest.text LIKE '%UPDATE 你的表名%' ORDER BY deqs.last_execution_time DESC;
注意:计划缓存会因内存压力、实例重启等被清空,且参数化查询可能不显示具体更新值。
二、针对未来操作(提前监控)
若需要记录后续的查询操作,可使用以下工具:
SQL Server Profiler
打开SSMS的“工具”菜单启动Profiler,新建跟踪并连接目标实例:- 在“事件选择”中勾选
SQL:BatchCompleted、RPC:Completed事件; - 添加筛选条件:
DatabaseName等于目标数据库,TextData包含UPDATE(或指定表名); - 启动跟踪后即可捕获后续执行的查询语句。
- 在“事件选择”中勾选
扩展事件
这是比Profiler更轻量的监控方式,可创建事件会话跟踪sql_statement_completed事件,筛选目标数据库和操作类型,适合长期监控。SQL Server Audit
配置数据库级审计,指定跟踪UPDATE等数据修改操作,审计日志会持久化保存,需具备相应权限才能配置。
总结:如果目标UPDATE操作已执行且未提前开启监控,大概率无法找回该历史记录;若需后续追踪,可通过上述提前配置的方式实现。
内容的提问来源于stack exchange,提问作者gib65
相关产品推荐
相关产品推荐

