sys.dm_exec_procedure_stats (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Retourne les statistiques sur les performances des agrégats pour les procédures stockées mises en cache. La vue retourne une ligne pour chaque plan de procédure stockée mise en cache et la durée de vie de la ligne correspond à celle pendant laquelle la procédure stockée reste mise en cache. Lorsqu'une procédure stockée est supprimée du cache, la ligne correspondante est éliminée de cette vue. À ce stade, un événement de trace SQL des statistiques de performances est déclenché comme sys.dm_exec_query_stats.

Dans Azure SQL Database, les vues de gestion dynamique ne peuvent pas exposer les informations susceptibles d’avoir un impact sur le contenu de la base de données ou d’exposer des informations sur d’autres bases de données auxquelles l’utilisateur a accès. Pour éviter d’exposer ces informations, chaque ligne qui contient des données qui n’appartiennent pas au locataire connecté est filtrée.

Remarque

Les résultats de sys.dm_exec_procedure_stats peuvent varier avec chaque exécution, car les données reflètent uniquement les requêtes terminées, et non celles en cours d’exécution. Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme Analytics (PDW), utilisez le nom sys.dm_pdw_nodes_exec_procedure_stats. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Nom de la colonne Type de données Description
database_id int ID de base de données dans lequel réside la procédure stockée.

Dans Azure SQL Database, les valeurs sont uniques au sein d’une base de données unique ou d’un pool élastique, mais pas dans un serveur logique.
object_id int Numéro d'identification d'objet de la procédure stockée.
type char(2) Type de l'objet :

P = Procédure stockée SQL

PC = Procédure stockée d'assembly (CLR)

X = Procédure stockée étendue
type_desc nvarchar(60) Description du type d'objet :

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE
sql_handle varbinary(64) Cela peut être utilisé pour mettre en corrélation les requêtes dans sys.dm_exec_query_stats exécutées à partir de cette procédure stockée.
plan_handle varbinary(64) Identificateur du plan en mémoire. Cet identificateur est temporaire et il reste constant uniquement tant que le plan est dans le cache. Cette valeur peut être utilisée avec la vue de gestion dynamique sys.dm_exec_cached_plans .

Sa valeur est toujours 0x000 lorsqu'une procédure stockée compilée en mode natif interroge une table optimisée en mémoire.
cached_time datetime Heure à laquelle la procédure stockée a été ajoutée au cache.
last_execution_time datetime Heure de dernière exécution de la procédure stockée.
execution_count bigint Nombre de fois où la procédure stockée a été exécutée depuis sa dernière compilation.
total_worker_time bigint Durée totale du processeur, en microsecondes, consommée par les exécutions de cette procédure stockée depuis sa compilation.

Pour les procédures stockées compilées en mode natif, total_worker_time peut être inexact si plusieurs exécutions sont réalisées en moins d’une milliseconde.
last_worker_time bigint Temps processeur, en microsecondes, consommé lors de la dernière exécution de la procédure stockée. 1
min_worker_time bigint Temps processeur minimal, en microsecondes, que cette procédure stockée a jamais consommée pendant une seule exécution. 1
max_worker_time bigint Temps processeur maximal, en microsecondes, que cette procédure stockée a jamais consommée pendant une seule exécution. 1
total_physical_reads bigint Nombre total de lectures physiques effectuées par les exécutions de cette procédure stockée depuis sa compilation.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
last_physical_reads bigint Nombre de lectures physiques effectuées la dernière fois que la procédure stockée a été exécutée.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
min_physical_reads bigint Nombre minimal de lectures physiques que cette procédure stockée a jamais effectuées pendant une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
max_physical_reads bigint Nombre maximal de lectures physiques que cette procédure stockée a jamais effectuées pendant une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
total_logical_writes bigint Nombre total d’écritures logiques effectuées par les exécutions de cette procédure stockée depuis sa compilation.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
last_logical_writes bigint Le nombre de pages du pool de mémoires tampons a écillé la dernière fois que le plan a été exécuté. Si une page est déjà modifiée, aucune écriture n'est comptée.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
min_logical_writes bigint Nombre minimal d’écritures logiques que cette procédure stockée a jamais effectuées pendant une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
max_logical_writes bigint Nombre maximal d’écritures logiques que cette procédure stockée a jamais effectuées pendant une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
total_logical_reads bigint Nombre total de lectures logiques effectuées par les exécutions de cette procédure stockée depuis sa compilation.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
last_logical_reads bigint Nombre de lectures logiques effectuées la dernière fois que la procédure stockée a été exécutée.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
min_logical_reads bigint Nombre minimal de lectures logiques que cette procédure stockée a jamais effectuées pendant une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
max_logical_reads bigint Nombre maximal de lectures logiques que cette procédure stockée a jamais effectuées pendant une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
total_elapsed_time bigint Temps écoulé total, en microsecondes, pour les exécutions terminées de cette procédure stockée.
last_elapsed_time bigint Temps écoulé, en microsecondes, pour l’exécution la plus récente de cette procédure stockée.
min_elapsed_time bigint Temps minimal écoulé, en microsecondes, pour toute exécution terminée de cette procédure stockée.
max_elapsed_time bigint Temps écoulé maximal, en microsecondes, pour toute exécution terminée de cette procédure stockée.
total_spills bigint Nombre total de pages déversées par l’exécution de cette procédure stockée depuis sa compilation.

S’applique à : à partir de SQL Server 2017 (14.x) CU3
last_spills bigint Le nombre de pages a déversé la dernière fois que la procédure stockée a été exécutée.

S’applique à : à partir de SQL Server 2017 (14.x) CU3
min_spills bigint Nombre minimal de pages que cette procédure stockée a jamais déversées pendant une seule exécution.

S’applique à : à partir de SQL Server 2017 (14.x) CU3
max_spills bigint Nombre maximal de pages que cette procédure stockée a jamais déversées pendant une seule exécution.

S’applique à : à partir de SQL Server 2017 (14.x) CU3
pdw_node_id int Identificateur du nœud sur lequel cette distribution est activée.

S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)
total_page_server_reads bigint Nombre total de lectures de serveur de pages effectuées par les exécutions de cette procédure stockée depuis sa compilation.

S’applique à : Azure SQL Database Hyperscale
last_page_server_reads bigint Nombre de lectures de serveur de pages effectuées la dernière fois que la procédure stockée a été exécutée.

S’applique à : Azure SQL Database Hyperscale
min_page_server_reads bigint Le nombre minimal de serveurs de pages lit que cette procédure stockée a jamais effectuée pendant une seule exécution.

S’applique à : Azure SQL Database Hyperscale
max_page_server_reads bigint Le nombre maximal de serveurs de pages lit que cette procédure stockée a jamais effectuée pendant une seule exécution.

S’applique à : Azure SQL Database Hyperscale

1 Pour les procédures stockées compilées en mode natif lorsque la collecte de statistiques est activée, le temps de travail est collecté en millisecondes. Si la requête s'exécute en moins d'une milliseconde, la valeur est 0.

Autorisations

Sur SQL Server et SQL Managed Instance, l’autorisation VIEW SERVER STATE est requise.

Sur les objectifs de service SQL Database Basic, S0 et S1, et pour les bases de données dans des pools élastiques, le compte d’administrateur du serveur, le compte d’administrateur Microsoft Entra ou l’appartenance au ##MS_ServerStateReader##rôle serveur est requis. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Notes

Les statistiques de la vue sont mises à jour lorsqu'une exécution de procédure stockée se termine.

Exemples

L'exemple suivant retourne des informations sur les dix principales procédures stockées identifiées d'après le temps moyen écoulé.

SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name',   
    d.cached_time, d.last_execution_time, d.total_elapsed_time,  
    d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],  
    d.last_elapsed_time, d.execution_count  
FROM sys.dm_exec_procedure_stats AS d  
ORDER BY [total_worker_time] DESC;  

Voir aussi

Fonctions et vues de gestion dynamique relatives à l'exécution (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_plan (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)