如何查看 SQL Server 执行的历史 SQL 语句记录?

2018-12-05 21:09:29 +08:00
 sike03

我使用下面的语句查询,虽然查到了历史 SQL 记录。

SELECT st.text as sql_statement,
       qs.creation_time as plan_last_compiled,
       qs.last_execution_time as plan_last_executed,
       qs.execution_count as plan_executed_count,
       qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
order by total_elapsed_time/execution_count desc

但是由于我是参数化提交的 SQL 语句,所以只能查到类似 name=@name and phone=@phone 类型的语句。

有没有办法查到 @name @phone 的真正的值?

7544 次点击
所在节点    问与答
10 条回复
Grapefruit
2018-12-05 21:14:38 +08:00
SQL Server Profiler 跟踪下?
sike03
2018-12-05 21:17:50 +08:00
@Grapefruit 想查的是没有 SQL Server Profiler 监控时产生的 SQL,所以好像不行。
tomczhen
2018-12-05 21:34:06 +08:00
商业数据库都有审计功能的,找到使用方法开启就行了。
sike03
2018-12-05 21:40:42 +08:00
@tomczhen 有没有办法找到开启审计之前的记录,因为没有预料到需要查询这些数据,所以之前也没有监控或者审计的准备。
brotherlegend
2018-12-05 22:22:22 +08:00
马克我也有这个需求
zro
2018-12-05 22:41:27 +08:00
记得是有自带工具监控查的啊。。
tomczhen
2018-12-05 22:45:55 +08:00
profiler 是有性能代价的,比较好的做法是在应用层记录日志。

CDC 可以采集到数据变更,不过不确定能否跟踪到区分用户。
mmdsun
2018-12-06 08:56:41 +08:00
Lumigent Log Explorer 好像是可以查看的
lcode
2018-12-06 11:29:41 +08:00
binlog 看不到吗
sike03
2018-12-06 11:34:17 +08:00
@lcode sql server 好像不适用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514710

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX