2013-04-16 70 views
1

在我們的SQL 2008 R2服務器之一中,我遇到了與批處理運行次數相關的編譯異常高百分比。通常情況下,服務器在這方面運行得有點高(約佔總批次的25%),但今天它更像80%。看着DMV向我展示了已編譯的內容,但沒有告訴我什麼時候發生了。查找哪些語句最近編譯

我知道我可以通過探查器獲取這些數據(而且現在正在這樣做),但希望找到某處將其存儲在歷史記錄中。

有沒有人找到一種方法來做到這一點,或者是Profiler的唯一方法?

+0

請不要探查器跟蹤。你只會讓服務器上的負載變得更糟。至少使用服務器端跟蹤(無UI)或擴展事件。 –

回答

1

當然,你可以在sys.dm_exec_query_stats使用creation_time

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; 
+0

謝謝Aaron!我感謝幫助! – PseudoToad