这个问题当时我使我郁闷了下 ,不知道怎么查看sql 的最后执行时间 ,后来在 在一个技术交流群里的到了高大侠的指点 ,才恍然大悟。
在sqlServer中有一个sys.dm_exec_query_stats 这个DMV(动态视图),该视图中记录了缓存中所有查询计划的统计信息,每一个查询计划在该视图中对应一条相关信息。
该视图字段的的具体相关信息可以参考sqlServer的帮助文档。
select Q.[text],Q.last_execution_time from( select B.[text],last_execution_time,ROW_NUMBER() over(partition by cast(B.[text] as varchar) order by last_execution_time desc) num from sys.dm_exec_query_stats A cross apply fn_get_sql(plan_handle) B) Q where num=1
当然这个可以根据需要 ,查找特定的sql之后执行时间的, 加一个模糊查询就ok了。
其实这种方法也有很大的缺陷!
前面说过 ,sys.dm_exec_query_stats 这个Dmv是 记录了查询计划相关统计信息,当查询计划由于内存或是机器重启,或是执行了 dbcc dropcleanbuffers ,dbcc freeproccache
sys.dm_exec_query_stats 对应的记录就会被删除,这时使用这个Dmv就不能查到相关的记录了。
所以刚才的方法并不能查到所有的执行过的sql的最后执行时间!
over!!!!!!!!!!!!!!!!!!!!!!!!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。