簡體   English   中英

SQL Server 2008R2 sys.dm_exec_procedure_stats-上次執行時間異常

[英]SQL Server 2008R2 sys.dm_exec_procedure_stats - unusual last execution time

我有一份可以從sys.dm_exec_procedure_stats捕獲數據的工作。 作業每分鍾運行一次。 它是從無連接的直接插入。 我遇到的情況是,一個特定的對象ID定期(每周兩天完全相同,不會失敗)返回如下內容

timeOfCapture /LastExecutionTime

16:58 / 16:30

16:59 / 16:30

17:00 / 16:30

17:01 / 17:00       (no explanation)

17:02 / 16:30       (no explanation - back to normal)

17:03 / 16:30

該存儲過程由大約在16:30開始的作業調用。該存儲過程並未在17:00運行(據我所知)。 有一個工作從17:00開始,但不執行此存儲過程。 存儲過程大約需要30秒才能完成。

所有對象的ID均相同,數據庫ID亦相同。

定期無間斷地發生這一事實意味着也許還有另一個過程

我不知道是否有任何事情發生,例如重新啟動等,我也不確定是否存在可能調用存儲過程的外部進程(其他服務器/ excel / etc),或者是否存在回滾。

這可能是一個紅鯡魚,我忽略了一些,但是我已經檢查了所有我能想到的。 關於那些LastExecutionTimes有什么想法嗎?

謝謝

對於每個高速緩存的存儲過程計划 ,該DMV都包含一行,並且該行的生存期只要存儲過程保持高速緩存即可。 這意味着該存儲過程可以在該表中包含行,如果在緩存中沒有計划,則根本沒有。 last_execution_time對應於該行的查詢計划最后一次執行該過程的時間。 因此,根據您的情況,該過程可能在前一天的1630(因為您沒有顯示日期)之后在當天的1700處執行,反之亦然。 考慮到您的方案的可重復性,您當前的工作很可能使用一個計划,而另一項工作(甚至在另一天)正在使用另一個計划。 目前尚不清楚您如何選擇要插入的行...可能是沒有ORDER BY TOP 1 這可能會導致此行為。 我們需要查看正在執行日志記錄的插入語句

請注意,有許多情況可能導致計划從緩存中刪除或創建新計划。 在具有固定參數的Job中,后者的可能性較小。

如果您確實要跟蹤過程的執行(不僅是緩存計划的最后一次執行),則需要設置日志記錄機制。 亞倫在她的書上有一篇很好的文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM