2017-06-19 84 views
0

是否有可能監控存儲過程的執行時間?我想在一天中多次自動執行一個存儲過程,並希望將這些結果保存到某處以便稍後分析它們?MSSQL:如何監視存儲過程的執行時間

+0

很好,因爲你正在執行它...你可以只記下它每次執行它...或SET STATISTICS TIME ON並存儲結果... – scsimon

回答

0

不僅整個proc執行時間,而且甚至可以記錄每個語句的執行時間以獲得更多的過程。

首先創建一個包含例如proc_name中,語句日誌表,開始/結束時間,rows_affected,...

在你的程序

然後保存開始時間到一個變量只是每個語句執行之前,以及會後聲明插入日誌表值(proc_name,語句,@StartTime,getdate(),@@ rowcount)。

然後你就可以分析頂(10)長期運行的報表/對應這樣的程序:

select top 10 * 
from dbo.log 
order by datediff(ss, StartTime, EndTime) desc 

它是特效,如正在執行的每天(但不是每一秒),ETL特效有用的,你甚至可以記錄錯誤

+0

這使得sence,但我需要更多的調查,如何實際使其工作。 我給你一點點更詳細的信息,我盡力去完成,也許你可以給一些提醒: 我在存儲過程執行一些randome值一個特定的命令,而不是整個存儲過程。 我輸入不同的產品ID以收集產品信息。如果我手動執行它,我會看到需要多長時間,但我想自動執行此操作,它會自動執行隨機選擇的ID並將執行時間保存在某處。 – Ziil

+0

如果您可以更改過程文本,只需將插入語句添加到日誌表中 – sepupic

+0

我更新了我的評論,我按下了輸入新行並無意中保存了它。 – Ziil