Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Veroorzaakt dat Microsoft SQL Server Transact-SQL statements niet uitvoert. In plaats daarvan geeft SQL Server gedetailleerde informatie terug over hoe de statements worden uitgevoerd.
Transact-SQL syntaxis-conventies
Syntaxis
SET SHOWPLAN_TEXT { ON | OFF }
Opmerkingen
De instelling van SET SHOWPLAN_TEXT wordt ingesteld bij execute- of runtime en niet bij parsetijd.
Wanneer SET SHOWPLAN_TEXT ON is, geeft SQL Server uitvoeringsinformatie terug voor elke Transact-SQL-instructie zonder deze uit te voeren. Nadat deze optie AAN is gezet, wordt uitvoeringsplaninformatie over alle volgende SQL Server-statements teruggegeven totdat de optie UIT is gezet. Als bijvoorbeeld een CREATE TABLE instructie wordt uitgevoerd terwijl SETSET SHOWPLAN_TEXT AAN is, geeft SQL Server een foutmelding terug van een volgende SELECT-instructie met diezelfde tabel die de gebruiker informeert dat de gespecificeerde tabel niet bestaat. Daarom mislukken volgende verwijzingen naar deze tabel. Wanneer SET SHOWPLAN_TEXT UIT is, voert SQL Server statements uit zonder een rapport met uitvoeringsplaninformatie te genereren.
SET SHOWPLAN_TEXTbedoeld om leesbare output terug te geven voor Microsoft Win32-opdrachtpromptapplicaties zoals de sqlcmd-hulp. SET SHOWPLAN_ALL geeft meer gedetailleerde output terug die bedoeld is voor gebruik met programma's die ontworpen zijn om de output te verwerken.
SET SET SHOWPLAN_TEXT en SETSET SHOWPLAN_ALL kan niet worden gespecificeerd in een opgeslagen procedure. Het moeten de enige statements in een batch zijn.
SET SHOWPLAN_TEXTgeeft informatie terug als een set rijen die een hiërarchische boom vormen en de stappen vertegenwoordigen die door de SQL Server-queryprocessor wordt genomen terwijl deze elke instructie uitvoert. Elke instructie die in de output wordt weergegeven, bevat één enkele rij met de tekst van de instructie, gevolgd door meerdere rijen met de details van de uitvoeringsstappen. De tabel toont de kolom die de uitvoer bevat.
| Kolomnaam | Description |
|---|---|
| StmtText | Voor rijen die niet van type PLAN_ROW zijn, bevat deze kolom de tekst van de Transact-SQL-uitspraak. Voor rijen van type PLAN_ROW bevat deze kolom een beschrijving van de bewerking. Deze kolom bevat de fysieke operator en kan optioneel ook de logische operator bevatten. Deze kolom kan ook gevolgd worden door een beschrijving die wordt bepaald door de fysieke operator. Voor meer informatie over fysieke operatoren, zie de kolom Argument in SET SHOWPLAN_ALL (Transact-SQL). |
Voor meer informatie over de fysieke en logische operatoren die in de Showplan-uitvoer te zien zijn, zie Showplan Logical and Physical Operators Reference
Permissions
Om te gebruiken SETSET SHOWPLAN_TEXTmoet je voldoende rechten hebben om de statements uit te voeren waarop SETSET SHOWPLAN_TEXT wordt uitgevoerd, en je moet SHOWPLAN-toestemming hebben voor alle databases die de gerefereerde objecten bevatten.
Voor SELECT-, INSERT, UPDATE, DELETEEXEC-stored_procedure- en EXEC user_defined_function-instructies moet de gebruiker om een Showplan te maken:
De juiste machtigingen hebben om de Transact-SQL-instructies uit te voeren.
ShowPLAN-machtigingen hebben voor alle databases met objecten waarnaar wordt verwezen door de Transact-SQL-instructies, zoals tabellen, weergaven, enzovoort.
Voor alle andere instructies, zoals DDL, USE database_name,SET , DECLARE, dynamische SQL, enzovoort, zijn alleen de juiste rechten nodig om de Transact-SQL statements uit te voeren.
Voorbeelden
Dit voorbeeld laat zien hoe indexen worden gebruikt door SQL Server terwijl het de statements verwerkt.
Dit is de zoekopdracht met behulp van een index:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.Product
WHERE ProductID = 905;
GO
SET SHOWPLAN_TEXT OFF;
GO
Dit is de resultatenset:
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)
Hier is de zoekopdracht die geen index gebruikt:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET SHOWPLAN_TEXT OFF;
GO
Dit is de resultatenset:
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]))
Zie ook
Operatoren (Transact-SQL)
SET Instructies (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)