可通过如下语句查询procedure执行的历史记录:
SELECT
DB_NAME(ISNULL(EPS.database_id,'')) [数据库名称]
--ISNULL(DBS.name, '') AS DatabaseName
,OBJECT_NAME(EPS.object_id, EPS.database_id) [存储过程名称] --AS ObjectName
,EPS.cached_time [添加到缓存的时间]--AS CachedTime
,EPS.last_elapsed_time '最近执行所耗费时间(微秒)'--AS LastElapsedTime
,EPS.last_worker_time '上次执行存储过程所用的CPU时间(微秒)'
,EPS.execution_count [上次编译以来所执行的次数]--AS ExecutionCount
,EPS.total_worker_time / EPS.execution_count [平均每次执行所用的CPU时间总量(微秒)]--AS AvgWorkerTime
,EPS.total_elapsed_time / EPS.execution_count [平均每次执行所用的时间(微秒)]--AS AvgElapsedTime
,(EPS.total_logical_reads + EPS.total_logical_writes)
/ EPS.execution_count AS AvgLogicalIO
,b.text [存储过程内容]
FROM sys.dm_exec_procedure_stats AS EPS
CROSS APPLY sys.dm_exec_sql_text(EPS.sql_handle) b
ORDER BY OBJECT_NAME(EPS.object_id, EPS.database_id) DESC;
select count(*) from wcinstall.QueueEntry
ORDER BY EPS.last_elapsed_time DESC;