SET SHOWPLAN_XML (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (dedicated SQL pool only)SQL analytics eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Zorgt ervoor dat SQL Server geen Transact-SQL instructies uitvoert. In plaats daarvan retourneert SQL Server gedetailleerde informatie over hoe de instructies worden uitgevoerd in de vorm van een goed gedefinieerd XML-document.

Transact-SQL syntaxisconventies

Syntaxis

SET SHOWPLAN_XML { ON | OFF }

Opmerkingen

De instelling van SET SHOWPLAN_XML wordt ingesteld bij uitvoering of uitvoeringstijd en niet op parseringstijd.

Wanneer SET SHOWPLAN_XML AAN is, retourneert SQL Server uitvoeringsplaninformatie voor elke instructie zonder deze uit te voeren, en Transact-SQL statements worden niet uitgevoerd. Nadat deze optie is ingesteld op AAN, wordt informatie over het uitvoeringsplan over alle volgende Transact-SQL instructies geretourneerd totdat de optie is uitgeschakeld. Als bijvoorbeeld een CREATE TABLE instructie wordt uitgevoerd terwijl SETSET SHOWPLAN_XML AAN is, geeft SQL Server een foutmelding terug van een volgende SELECT-instructie die diezelfde tabel bevat; de gespecificeerde tabel bestaat niet. Daarom mislukken volgende verwijzingen naar deze tabel. Wanneer SET SHOWPLAN_XML UIT is, voert SQL Server de statements uit zonder een rapport te genereren.

SET SHOWPLAN_XML is bedoeld om output terug te geven als nvarchar(max) voor toepassingen zoals de sqlcmd-hulp , waarbij de XML-uitvoer vervolgens door andere tools wordt gebruikt om de informatie van het queryplan weer te geven en te verwerken.

Notitie

De dynamische beheerweergave, sys.dm_exec_query_plan, geeft dezelfde informatie terug als SET SHOWPLAN XML in het xml-datatype . Deze informatie wordt geretourneerd uit de kolom query_plan van sys.dm_exec_query_plan. Zie sys.dm_exec_query_plan (Transact-SQL)voor meer informatie.

SET SHOWPLAN_XML kan niet worden gespecificeerd binnen een opgeslagen procedure. Dit moet de enige instructie in een batch zijn.

SET SHOWPLAN_XML levert informatie terug als een set XML-documenten. Elke batch na de SET SHOWPLAN_XML ON-instructie wordt in de output weerspiegeld door één enkel document. Elk document bevat de tekst van de instructies in de batch, gevolgd door de details van de uitvoeringsstappen. In het document worden de geschatte kosten, het aantal rijen, de geopende indexen en typen operators weergegeven die zijn uitgevoerd, de samenvoegvolgorde en meer informatie over de uitvoeringsplannen.

Notitie

Als Include Actual Execution Plan is geselecteerd in SQL Server Management Studio, levert deze SET optie geen XML Showplan-output op. Maak de knop 'Include Actual Execution Plan' open voordat je deze SET optie gebruikt.

Geschatte uitvoeringsplannen via SSMS zijn SET SHOWPLAN_XML beschikbaar voor dedicated SQL pools (voorheen SQL Dream) en dedicated SQL pools in Azure Synapse Analytics. Er zijn verschillende opdrachten om een daadwerkelijk uitvoeringsplan op te halen voor toegewezen SQL-pools (voorheen SQL DW) en toegewezen SQL-pools in Azure Synapse Analytics. Zie Uw toegewezen SQL-poolworkload van Azure Synapse Analytics bewaken met behulp van DMV'svoor meer informatie.

Locatie van SHOWPLAN-uitvoer

Het document met het XML-schema voor de XML die door wordt uitgevoerdSET SHOWPLAN_XML, wordt tijdens de installatie gekopieerd naar een lokale map op de computer waarop Microsoft SQL Server is geïnstalleerd. Het document is te vinden op het station met de SQL Server-installatiebestanden, op een pad dat lijkt op het volgende:

  • \Microsoft SQL Server\130\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd

In het voorgaande pad wordt het knooppunt 130\ gebruikt door SQL Server 2016. Het getal 130 wordt afgeleid van het eerste knooppunt van de waarde die wordt geretourneerd door SELECT @@VERSION, wat 13 is. Voor SQL Server 2017 zou het pad 140\gebruiken, omdat het eerste knooppunt van de @@VERSION-waarde 14 is. SQL Server 2019 is de eerste waarde van @@VERSION 15. SQL Server 2022 de eerste waarde van @@VERSION is 16.

Het Showplan-schema vindt u ook in XML-schema's van Microsoft SQL Server.

Machtigingen

Om te gebruiken SETSET SHOWPLAN_XMLmoet je voldoende rechten hebben om de statements uit te voeren waarop SETSET SHOWPLAN_XML wordt uitgevoerd, en je moet SHOWPLAN-toestemming hebben voor alle databases die de gerefereerde objecten bevatten.

Voor SELECT, INSERT, UPDATE, DELETE, EXEC *stored_procedure*en EXEC *user_defined_function* instructies moet de gebruiker een Showplan 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 machtigingen nodig om de Transact-SQL-instructies uit te voeren.

Voorbeelden

De twee volgende statements gebruiken de SET SHOWPLAN_XML instellingen om te laten zien hoe SQL Server indexen analyseert en optimaliseert in queries.

De eerste query maakt gebruik van de vergelijkingsoperator Equals (=) in de WHERE-component voor een geïndexeerde kolom. De tweede query maakt gebruik van de OPERATOR LIKE in de WHERE-component. Dit dwingt SQL Server om een geclusterde indexscan te gebruiken en de gegevens te vinden die voldoen aan de WHERE-componentvoorwaarde. De waarden in de EstimateRows en de EstimatedTotalSubtreeCost kenmerken zijn kleiner voor de eerste geïndexeerde query, wat aangeeft dat deze veel sneller wordt verwerkt en dat er minder resources worden gebruikt dan de niet-geïndexeerde query.

USE AdventureWorks2022;
GO
SET SHOWPLAN_XML ON;
GO
-- First query.
SELECT BusinessEntityID
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Production%';
GO
SET SHOWPLAN_XML OFF;

Volgende stappen