SET SHOWPLAN_XML (Transact-SQL)
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (endast dedikerad SQL-pool)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Gör att SQL Server inte kör Transact-SQL-instruktioner. I stället returnerar SQL Server detaljerad information om hur uttrycken ska köras i form av ett väldefinierat XML-dokument.
I Fabric Data Warehouse och SQL-analysslutpunkten är SET SHOWPLAN_XML en förhandsversionsfunktion.
Transact-SQL syntaxkonventioner
Syntax
SET SHOWPLAN_XML { ON | OFF }
Anmärkningar
Inställningen set SHOWPLAN_XML anges vid körnings- eller körningstid och inte vid parsningstid.
När SET-SHOWPLAN_XML är PÅ returnerar SQL Server körningsplaninformation för varje instruktion utan att köra den, och Transact-SQL-instruktioner körs inte. När det här alternativet har angetts på returneras körningsplaninformation om alla efterföljande Transact-SQL-instruktioner tills alternativet har ställts in AV. Om till exempel en CREATE TABLE-instruktion körs medan SET SHOWPLAN_XML är PÅ, returnerar SQL Server ett felmeddelande från en efterföljande SELECT-instruktion som involverar samma tabell. den angivna tabellen finns inte. Därför misslyckas efterföljande referenser till den här tabellen. När SET-SHOWPLAN_XML är AV kör SQL Server -satserna utan att generera en rapport.
SET-SHOWPLAN_XML är avsett att returnera utdata som nvarchar(max) för program som sqlcmd-verktyget, där XML-utdata senare används av andra verktyg för att visa och bearbeta information om frågeplanen.
Not
Den dynamiska hanteringsvyn, sys.dm_exec_query_plan
, returnerar samma information som SET SHOWPLAN XML i XML- datatyp. Den här informationen returneras från kolumnen query_plan
i sys.dm_exec_query_plan
. Mer information finns i sys.dm_exec_query_plan (Transact-SQL).
SET-SHOWPLAN_XML kan inte anges i en lagrad procedur. Det måste vara den enda instruktionen i en batch.
SET SHOWPLAN_XML returnerar information som en uppsättning XML-dokument. Varje batch efter SET SHOWPLAN_XML ON-instruktionen återspeglas i utdata av ett enda dokument. Varje dokument innehåller texten i -uttrycken i batchen, följt av information om körningsstegen. Dokumentet visar uppskattade kostnader, antal rader, använda index och typer av operatorer som utförs, kopplingsordning och mer information om körningsplanerna.
Not
Om Include Actual Execution Plan har valts i SQL Server Management Studio, genererar inte det här SET-alternativet XML Showplan-utdata. Avmarkera knappen Inkludera faktisk körningsplan innan du använder det här SET-alternativet.
Uppskattade körningsplaner via SSMS och SET-SHOWPLAN_XML är tillgängliga för dedikerade SQL-pooler (tidigare SQL DW) och dedikerade SQL-pooler i Azure Synapse Analytics. Det finns olika kommandon för att hämta en faktisk körningsplan för dedikerade SQL-pooler (tidigare SQL DW) och dedikerade SQL-pooler i Azure Synapse Analytics. Mer information finns i Övervaka din dedikerade SQL-poolarbetsbelastning i Azure Synapse Analytics med DMV:er.
Platsen för SHOWPLAN-utdata
Dokumentet som innehåller XML-schemat för XML-utdata från SET SHOWPLAN_XML kopieras under installationen till en lokal katalog på datorn där Microsoft SQL Server är installerat. Dokumentet finns på enheten som innehåller SQL Server-installationsfilerna på en sökväg som liknar följande:
\Microsoft SQL Server\130\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
I föregående sökväg används noden 130\
av SQL Server 2016. Talet 130 härleds från den första noden i värdet som returneras av SELECT @@VERSION
, som är 13. För SQL Server 2017 skulle sökvägen använda 140\
eftersom den första noden i dess @@VERSION
värde är 14. SQL Server 2019 det första värdet från @@VERSION
är 15. SQL Server 2022 det första värdet från @@VERSION
är 16.
Showplan-schemat finns också på Xml-scheman för Microsoft SQL Server.
Behörigheter
För att kunna använda SET-SHOWPLAN_XML måste du ha tillräcklig behörighet för att köra de instruktioner som SET-SHOWPLAN_XML körs på, och du måste ha SHOWPLAN-behörighet för alla databaser som innehåller refererade objekt.
För SELECT
, INSERT
, UPDATE
, DELETE
, EXEC *stored_procedure*
och EXEC *user_defined_function*
-instruktioner måste användaren:
Ha rätt behörighet för att köra Transact-SQL-instruktionerna.
Ha SHOWPLAN-behörighet för alla databaser som innehåller objekt som refereras av Transact-SQL-instruktioner, till exempel tabeller, vyer och så vidare.
För alla andra instruktioner, till exempel DDL, USE *database_name*
, SET
, DECLARE
, dynamisk SQL och så vidare, krävs endast lämpliga behörigheter för att köra Transact-SQL-instruktionerna.
Exempel
De två instruktionerna som följer använder SET SHOWPLAN_XML-inställningarna för att visa hur SQL Server analyserar och optimerar användningen av index i frågor.
Den första frågan använder jämförelseoperatorn Equals (=
) i WHERE-satsen i en indexerad kolumn. Den andra frågan använder LIKE-operatorn i WHERE-satsen. Detta tvingar SQL Server att använda en klustrad indexgenomsökning och hitta data som uppfyller WHERE-satsens villkor. Värdena i EstimateRows
- och EstimatedTotalSubtreeCost
-attributen är mindre för den första indexerade frågan, vilket indikerar att den bearbetas mycket snabbare och använder färre resurser än den icke-indexerade frågan.
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;