sys.dm_exec_query_plan_stats (Transact-SQL)sys.dm_exec_query_plan_stats (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Retourne l’équivalent du dernier plan d’exécution réel connu pour un plan de requête mis en cache précédemment.Returns the equivalent of the last known actual execution plan for a previously cached query plan.

SyntaxeSyntax

sys.dm_exec_query_plan_stats(plan_handle)  

ArgumentsArguments

plan_handleplan_handle
Est un jeton qui identifie de façon unique un plan d’exécution de requête pour un lot qui a été exécutée et son plan réside dans le cache du plan, ou est en cours d’exécution.Is a token that uniquely identifies a query execution plan for a batch that has executed and its plan resides in the plan cache, or is currently executing. plan_handle est varbinary (64) .plan_handle is varbinary(64).

Le plan_handle peut être obtenu à partir d’objets de gestion dynamique suivants :The plan_handle can be obtained from the following dynamic management objects:

Table retournéeTable Returned

Nom de la colonneColumn Name Type de donnéesData Type DescriptionDescription
dbiddbid smallintsmallint ID de la base de données de contexte qui était en fonction lorsque l'instruction Transact-SQLTransact-SQL correspondant à ce plan a été compilée.ID of the context database that was in effect when the Transact-SQLTransact-SQL statement corresponding to this plan was compiled. Pour les instructions SQL ad hoc et préparées, l'ID de la base de données où les instructions ont été compilées.For ad hoc and prepared SQL statements, the ID of the database where the statements were compiled.

Colonne acceptant la valeur NULL.Column is nullable.
objectidobjectid Intint ID de l'objet (par exemple, procédure stockée ou fonction définie par l'utilisateur) pour ce plan de requête.ID of the object (for example, stored procedure or user-defined function) for this query plan. Pour les traitements ad hoc et préparées, cette colonne est null.For ad hoc and prepared batches, this column is null.

Colonne acceptant la valeur NULL.Column is nullable.
nombrenumber smallintsmallint Entier servant à la numérotation des procédures stockées.Numbered stored procedure integer. Par exemple, un groupe de procédures pour le commandes application peut être nommée orderproc ; 1, orderproc ; 2, et ainsi de suite.For example, a group of procedures for the orders application may be named orderproc;1, orderproc;2, and so on. Pour les traitements ad hoc et préparées, cette colonne est null.For ad hoc and prepared batches, this column is null.

Colonne acceptant la valeur NULL.Column is nullable.
encryptedencrypted bitbit Indique si la procédure stockée correspondante est chiffrée.Indicates whether the corresponding stored procedure is encrypted.

0 = Non chiffrée.0 = not encrypted

1 = Chiffrée.1 = encrypted

Colonne n'acceptant pas la valeur NULL.Column is not nullable.
query_planquery_plan xmlxml Contient le dernier runtime connu Showplan représentation le plan d’exécution réel qui est spécifié avec plan_handle.Contains the last known runtime Showplan representation of the actual query execution plan that is specified with plan_handle. Le plan d'exécution de requêtes est au format XML.The Showplan is in XML format. Un plan est généré pour chaque traitement contenant par exemple des instructions Transact-SQLTransact-SQL ad hoc, des appels de procédures stockées et des appels de fonctions définies par l'utilisateur.One plan is generated for each batch that contains, for example ad hoc Transact-SQLTransact-SQL statements, stored procedure calls, and user-defined function calls.

Colonne acceptant la valeur NULL.Column is nullable.

NotesRemarks

Cette fonction système est disponible à partir de SQL Server 2019SQL Server 2019 CTP 2.4.This system function is available starting with SQL Server 2019SQL Server 2019 CTP 2.4.

Il s’agit d’une fonctionnalité d’activation qui nécessite l’activation de l’indicateur de trace 2451.This is an opt-in feature and requires trace flag 2451 to be enabled. À compter de SQL Server 2019SQL Server 2019 CTP 2.5, pour effectuer cette opération au niveau de la base de données, voir l’option LAST_QUERY_PLAN_STATS dans ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).Starting with SQL Server 2019SQL Server 2019 CTP 2.5, to accomplish this at the database level, see the LAST_QUERY_PLAN_STATS option in ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).

Cette fonction système fonctionne sous le léger infrastructure de profilage des statistiques d’exécution de requête.This system function works under the lightweight query execution statistics profiling infrastructure. Pour plus d’informations, consultez Infrastructure du profilage de requête.For more information, see Query Profiling Infrastructure.

Dans les conditions suivantes, un plan de requête de sortie équivalent à un plan d’exécution réel est retourné dans le query_plan colonne de la table retournée pour sys.dm_exec_query_plan_ statistiques:Under the following conditions, a Showplan output equivalent to an actual execution plan is returned in the query_plan column of the returned table for sys.dm_exec_query_plan_stats:

  • Le plan se trouve dans sys.dm_exec_cached_plans.The plan can be found in sys.dm_exec_cached_plans.
    ANDAND
  • La requête en cours d’exécution est complexe ou la consommation de ressources.The query being executed is complex or resource consuming.

Dans les conditions suivantes, un simplifiée 1 sortie Showplan est retournée dans le query_plan colonne de la table retournée pour sys.dm_exec_ query_plan_stats:Under the following conditions, a simplified 1 Showplan output is returned in the query_plan column of the returned table for sys.dm_exec_query_plan_stats:

  • Le plan se trouve dans sys.dm_exec_cached_plans.The plan can be found in sys.dm_exec_cached_plans.
    ANDAND
  • La requête est assez simple, généralement classés en tant que partie d’une charge de travail OLTP.The query is simple enough, usually categorized as part of an OLTP workload.

1 compter SQL Server 2019SQL Server 2019 CTP 2.5, cela fait référence à un plan de requête qui contient uniquement l’opérateur de nœud racine (SELECT).1 Starting with SQL Server 2019SQL Server 2019 CTP 2.5, this refers to a Showplan that only contains the root node operator (SELECT). Pour SQL Server 2019SQL Server 2019 cela fait référence au plan de mise en cache comme étant disponibles par le biais de CTP 2.4 sys.dm_exec_cached_plans.For SQL Server 2019SQL Server 2019 CTP 2.4 this refers to the cached plan as available through sys.dm_exec_cached_plans.

Dans les conditions suivantes, aucune sortie est retournée de sys.dm_exec_query_plan_stats:Under the following conditions, no output is returned from sys.dm_exec_query_plan_stats:

Notes

En raison d’une limitation du nombre de niveaux imbriqués autorisés dans les xml type de données, sys.dm_exec_query_plan ne peut pas retourner des plans de requête qui correspondent ou sont supérieurs à 128 niveaux d’éléments imbriqués.Due to a limitation in the number of nested levels allowed in the xml data type, sys.dm_exec_query_plan cannot return query plans that meet or exceed 128 levels of nested elements. Dans les versions antérieures de SQL ServerSQL Server, cette condition a empêché le plan de requête retournant et génère erreur 6335.In earlier versions of SQL ServerSQL Server, this condition prevented the query plan from returning and generates error 6335. Dans SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 et versions ultérieures, le query_plan colonne retourne NULL.In SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 and later versions, the query_plan column returns NULL.

AutorisationsPermissions

Nécessite l'autorisation VIEW SERVER STATE sur le serveur.Requires VIEW SERVER STATE permission on the server.

ExemplesExamples

A.A. Recherchez au dernier plan d’exécution réel connu un plan mis en cache spécifiqueLooking at last known actual query execution plan for a specific cached plan

L’exemple suivant interroge sys.dm_exec_cached_plans pour rechercher le plan vous intéresse et copie son plan_handle à partir de la sortie.The following example queries sys.dm_exec_cached_plans to find the interesting plan and copy its plan_handle from the output.

SELECT * FROM sys.dm_exec_cached_plans;  
GO  

Pour obtenir le dernier connus réel plan d’exécution, utilisez ensuite copié plan_handle avec la fonction système sys.dm_exec_query_plan_stats.Then, to obtain the last known actual query execution plan, use the copied plan_handle with system function sys.dm_exec_query_plan_stats.

SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);  
GO  

B.B. Recherchez au dernier plan d’exécution réel connus tous les plans mis en cacheLooking at last known actual query execution plan for all cached plans

SELECT *   
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps;  
GO  

C.C. Recherchez au dernier plan d’exécution réel connu un plan mis en cache spécifique et le texte de la requêteLooking at last known actual query execution plan for a specific cached plan and query text

SELECT *   
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps
WHERE st.text LIKE 'SELECT * FROM Person.Person%';  
GO  

D.D. Examinez les événements mis en cache pour le déclencheurLook at cached events for trigger

SELECT *
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype ='Trigger';
GO

Voir aussiSee Also

Indicateurs de traceTrace Flags
Fonctions et vues de gestion dynamique (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Vues de gestion dynamique liées à l’exécution (Transact-SQL)Execution Related Dynamic Management Views (Transact-SQL)