Puede obtener esto (y más) de las Vistas de administración dinámica (DMV). Para obtener estadísticas de un procedimiento almacenado en particular, intente la siguiente consulta.
SELECT
OBJECT_NAME(qt.objectid)
, qs.execution_count AS [Execution Count]
, qs.execution_count / DATEDIFF(Second, qs.creation_time, GETDATE()) AS [Calls/Second]
, qs.total_worker_time / qs.execution_count AS [AvgWorkerTime]
, qs.total_worker_time AS [TotalWorkerTime]
, qs.total_elapsed_time / qs.execution_count AS [AvgElapsedTime]
, qs.max_logical_reads
, qs.max_logical_writes
, qs.total_physical_reads
, DATEDIFF(Minute, qs.creation_time, GETDATE()) AS [Age in Cache]
FROM
sys.dm_exec_query_stats AS qs
CROSS APPLY
sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
qt.[dbid] = DB_ID()
AND qt.objectid = OBJECT_ID('StoredProcedureName')
OPTION (RECOMPILE);
Para ver los procedimientos ejecutados con mayor frecuencia:
SELECT
OBJECT_NAME(qt.objectid)
, qs.execution_count AS [Execution Count]
, qs.execution_count / DATEDIFF(Second, qs.creation_time, GETDATE()) AS [Calls/Second]
, qs.total_worker_time / qs.execution_count AS [AvgWorkerTime]
, qs.total_worker_time AS [TotalWorkerTime]
, qs.total_elapsed_time / qs.execution_count AS [AvgElapsedTime]
, qs.max_logical_reads
, qs.max_logical_writes
, qs.total_physical_reads
, DATEDIFF(Minute, qs.creation_time, GETDATE()) AS [Age in Cache]
FROM
sys.dm_exec_query_stats AS qs
CROSS APPLY
sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
qt.[dbid] = DB_ID()
ORDER BY
qs.execution_count DESC
OPTION (RECOMPILE);
Los valores informados son acumulativos desde el último reinicio. Si desea medir durante un período fijo, utilice el siguiente comando para restablecer las estadísticas de espera.
DBCC SQLPERF("sys.dm_os_wait_stats",CLEAR);
Si desea medir períodos de tiempo fijos a lo largo del día, puede alimentar el resultado de la consulta a una tabla a través de un trabajo de agente y a) calcular los valores entre dos ejecuciones ob) emitir el restablecimiento de las estadísticas de espera como el último paso en el trabajo del agente .
Alternativamente, capture una traza del generador de perfiles y ejecútela a través de Clear Trace .