Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Empêche Microsoft SQL Server d'exécuter des instructions Transact-SQL. Au lieu de cela, SQL Server retourne des informations détaillées sur l'exécution des instructions.
Conventions de la syntaxe Transact-SQL
Syntaxe
SET SHOWPLAN_TEXT { ON | OFF }
Notes
Le paramètre est défini au moment de SET SHOWPLAN_TEXT l’exécution ou de l’exécution et non au moment de l’analyse.
Lorsque SET SHOWPLAN_TEXT est ACTIVÉ, SQL Server renvoie les informations d’exécution pour chaque instruction Transact-SQL sans l’exécuter. Une fois cette option activée, des informations sur le plan d'exécution de toutes les instructions SQL Server suivantes sont retournées jusqu'à sa désactivation (OFF). Par exemple, si une CREATE TABLE instruction est exécutée alors qu’elle SETSET SHOWPLAN_TEXT est ACTIVÉE, SQL Server renvoie un message d’erreur provenant d’une instruction SELECT ultérieure impliquant cette même table informant l’utilisateur que la table spécifiée n’existe pas. Par conséquent, les prochaines références à cette table échoueront. Lorsque SET SHOWPLAN_TEXT c’est DÉSACTIVÉ, SQL Server exécute des instructions sans générer de rapport contenant les informations du plan d’exécution.
SET SHOWPLAN_TEXTest destiné à renvoyer une sortie lisible pour les applications de l’invite de commande Win32 de Microsoft telles que l’utilitaire sqlcmd. SET SHOWPLAN_ALL renvoie une sortie plus détaillée destinée à être utilisée avec des programmes conçus pour gérer sa sortie.
SET SET SHOWPLAN_TEXT et SETSET SHOWPLAN_ALL ne peuvent pas être spécifiés dans une procédure stockée. Elles doivent être les seules instructions d'un traitement.
SET SHOWPLAN_TEXTrenvoie l’information sous forme d’un ensemble de lignes qui forment un arbre hiérarchique représentant les étapes suivies par le processeur de requêtes SQL Server lors de l’exécution de chaque instruction. Chaque instruction reflétée dans la sortie contient une ligne unique comportant le texte de l'instruction, suivie de plusieurs lignes contenant les détails des étapes d'exécution. Le tableau suivant montre la colonne figurant dans la sortie.
| Nom de la colonne | Description |
|---|---|
| StmtText | Pour les lignes qui ne sont pas du type PLAN_ROW, cette colonne contient le texte de l’instruction Transact-SQL. Pour les lignes de type PLAN_ROW, cette colonne contient une description de l'opération. Cette colonne contient l'opérateur physique et peut, en option, contenir l'opérateur logique. Elle peut également être suivie d’une description qui est déterminée par l’opérateur physique. Pour plus d’informations sur les opérateurs physiques, voir la colonne Argument dans SET SHOWPLAN_ALL (Transact-SQL). |
Pour plus d’informations sur les opérateurs physiques et logiques affichés dans des résultats de plan de requêtes, consultez Guide de référence des opérateurs Showplan logiques et physiques.
Autorisations
Pour utiliser SETSET SHOWPLAN_TEXT, vous devez disposer d’autorisations suffisantes pour exécuter les instructions sur lesquelles SETSET SHOWPLAN_TEXT est exécuté, et vous devez avoir l’autorisation SHOWPLAN pour toutes les bases de données contenant des objets référencés.
Pour les instructions SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure et EXEC user_defined_function , pour produire un Showplan, l’utilisateur doit :
disposer des autorisations appropriées pour exécuter les instructions Transact-SQL ;
Disposer de l'autorisation SHOWPLAN sur toutes les bases de données contenant les objets référencés par les instructions Transact-SQL, par exemple des tables, des vues, etc.
Pour toutes les autres instructions, telles que DDL, USE database_name, SETDECLARE, SQL dynamique, etc., seules les permissions appropriées pour exécuter les instructions Transact-SQL sont nécessaires.
Exemples
Cet exemple montre comment SQL Server utilise les index durant le traitement d'une instruction.
Requête utilisant un index :
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.Product
WHERE ProductID = 905;
GO
SET SHOWPLAN_TEXT OFF;
GO
Voici l'ensemble de résultats obtenu :
StmtText
---------------------------------------------------
SELECT *
FROM Production.Product
WHERE ProductID = 905;
StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Clustered Index Seek(OBJECT:([AdventureWorks2022].[Production].[Product].[PK_Product_ProductID]), SEEK:([AdventureWorks2022].[Production].[Product].[ProductID]=CONVERT_IMPLICIT(int,[@1],0)) ORDERED FORWARD)
Requête n'utilisant pas d'index :
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET SHOWPLAN_TEXT OFF;
GO
Voici l'ensemble de résultats obtenu :
StmtText
------------------------------------------------------------------------
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
StmtText
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Clustered Index Scan(OBJECT:([AdventureWorks2022].[Production].[ProductCostHistory].[PK_ProductCostHistory_ProductCostID]), WHERE:([AdventureWorks2022].[Production].[ProductCostHistory].[StandardCost]<[@1]))
Voir aussi
Opérateurs (Transact-SQL)
SET Instructions (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)