Réponses:
Vous pouvez l'obtenir (et plus) à partir des vues de gestion dynamique (DMV). Pour obtenir des statistiques pour une procédure stockée particulière, essayez la requête suivante.
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);
Pour consulter les procédures les plus fréquemment exécutées:
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);
Les valeurs rapportées sont cumulatives depuis le dernier redémarrage. Si vous souhaitez mesurer sur une période fixe, utilisez la commande ci-dessous pour réinitialiser les statistiques d'attente.
DBCC SQLPERF("sys.dm_os_wait_stats",CLEAR);
Si vous souhaitez mesurer des plages horaires fixes tout au long de la journée, vous pouvez alimenter la sortie de la requête vers une table via un travail d'agent et soit a) calculer les valeurs entre deux exécutions, soit b) émettre la réinitialisation des statistiques d'attente comme dernière étape du travail d'agent .
Vous pouvez également capturer une trace du profileur et l'exécuter via Clear Trace .