在我们的一台SQL 2008 R2服务器上,我遇到了与批量运行次数相关的异常高比例的编译。通常服务器在这方面运行有点高(约占总批次的25%),但今天它更像是80%。看DMV会告诉我编译的内容但是没有告诉我它何时发生。
我知道我可以使用分析器来提取这些数据(现在我正在这样做),但希望找到一个存储在历史记录中的地方。
有没有人找到办法做到这一点,还是Profiler唯一的方法?
答案 0 :(得分:1)
当然,您可以在creation_time
中使用sys.dm_exec_query_stats
:
SELECT * FROM sys.dm_exec_query_stats AS s
INNER JOIN sys.dm_exec_cached_plans AS p
ON s.plan_handle = p.plan_handle
CROSS APPLY sys.dm_exec_sql_text(s.sql_handle)
ORDER BY creation_time DESC;