SET SHOWPLAN_XML (Transact-SQL)

Platí na:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (dedicated SQL pool only)SQL analytics endpoint v Microsoft FabricSklad v Microsoft FabricSQL databáze v Microsoft Fabric

Způsobí, že SQL Server nespustí Transact-SQL příkazy. Místo toho SQL Server vrátí podrobné informace o tom, jak se příkazy budou spouštět ve formě dobře definovaného dokumentu XML.

Transact-SQL konvence syntaxe

Syntax

SET SHOWPLAN_XML { ON | OFF }

Poznámky

Nastavení je SET SHOWPLAN_XML nastaveno při spuštění nebo běhu a ne při parse.

Když SET SHOWPLAN_XML je ON, SQL Server vrací informace o plánu vykonávání pro každý příkaz bez jeho vykonání a Transact-SQL příkazy se neprovedou. Po nastavení této možnosti se informace o plánu provádění o všech následných příkazech Transact-SQL vrátí, dokud není možnost vypnutá. Například pokud CREATE TABLE je příkaz vykonán během SETSET SHOWPLAN_XML ZAPNUTÉHO režimu, SQL Server vrátí chybovou zprávu z následujícího příkazu SELECT zahrnující stejnou tabulku; daná tabulka neexistuje. Následné odkazy na tuto tabulku proto selžou. Když SET SHOWPLAN_XML je VYPNUTO, SQL Server vykoná příkazy bez generování reportu.

SET SHOWPLAN_XML je určen k vracení výstupu jako nvarchar(max) pro aplikace jako utilita sqlcmd , kde XML výstup je následně využíván jinými nástroji k zobrazení a zpracování informací o plánu dotazu.

Poznámka

Dynamický pohled sys.dm_exec_query_plansprávy vrací stejné informace jako SET SHOWPLAN XML v datovém typu xml . Tyto informace se vrátí ze sloupce query_plansys.dm_exec_query_plan. Další informace naleznete v tématu sys.dm_exec_query_plan (Transact-SQL).

SET SHOWPLAN_XML nelze specifikovat v rámci uložené procedury. Musí to být jediný příkaz v dávce.

SET SHOWPLAN_XML vrací informace jako sadu XML dokumentů. Každá dávka po příkazu SET SHOWPLAN_XML ON je zobrazena ve výstupu jediným dokumentem. Každý dokument obsahuje text příkazů v dávce následovaný podrobnostmi o krocích provádění. Dokument ukazuje odhadované náklady, počet řádků, přístupové indexy a typy provedených operátorů, pořadí spojení a další informace o plánech provádění.

Poznámka

Pokud je v SQL Server Management Studio zvoleno Zahrnout skutečný plán provedení, tato SET možnost nevytváří výstup XML Showplan. Před použitím této SET možnosti vymažte tlačítko Zahrnout skutečný plán provedení.

Odhadované plány provedení jsou dostupné pro SET SHOWPLAN_XML dedikované SQL pooly (dříve SQL DW) a dedikované SQL pooly v Azure Synapse Analytics. Pokud chcete načíst skutečný plán provádění pro vyhrazené fondy SQL (dříve SQL DW) a vyhrazené fondy SQL ve službě Azure Synapse Analytics, existují různé příkazy. Další informace najdete v tématu Monitorování úloh vyhrazeného fondu SQL služby Azure Synapse Analytics pomocí zobrazení dynamické správy.

Umístění výstupu SHOWPLAN

Dokument obsahující XML schéma pro XML výstup je SET SHOWPLAN_XML při nastavení zkopírován do lokálního adresáře na počítači, na kterém je Microsoft SQL Server nainstalován. Dokument najdete na jednotce obsahující instalační soubory SQL Serveru v cestě podobné této:

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

V předchozí cestě používá 130\ uzlu SQL Server 2016. Číslo 130 je odvozeno od prvního uzlu hodnoty vrácené SELECT @@VERSION, což je 13. Pro SQL Server 2017 by cesta používala 140\, protože první uzel jeho @@VERSION hodnota je 14. SQL Server 2019 první hodnota z @@VERSION je 15. SQL Server 2022 první hodnota z @@VERSION je 16.

Schéma Showplan lze nalézt také na schémat XML microsoft SQL Serveru.

Dovolení

Pro použití SETSET SHOWPLAN_XMLmusíte mít dostatečná oprávnění k provádění příkazů, na kterých SETSET SHOWPLAN_XML se vykonává, a musíte mít SHOWPLAN oprávnění pro všechny databáze obsahující odkazované objekty.

Pro příkazy SELECT, INSERT, UPDATE, DELETE, EXEC *stored_procedure*a EXEC *user_defined_function*, aby uživatel vytvořil plán Showplan, musí:

  • Mít příslušná oprávnění ke spuštění příkazů Transact-SQL.

  • Mít oprávnění SHOWPLAN pro všechny databáze obsahující objekty odkazované příkazy Transact-SQL, jako jsou tabulky, zobrazení atd.

Pro všechny ostatní příkazy, jako je DDL, USE *database_name*, SET, DECLARE, dynamické SQL atd., jsou potřeba pouze příslušná oprávnění ke spuštění Transact-SQL příkazů.

Příklady

Následující dva výroky používají SET SHOWPLAN_XML nastavení k zobrazení způsobu, jakým SQL Server analyzuje a optimalizuje využití indexů v dotazech.

První dotaz používá relační operátor Equals (=) v klauzuli WHERE indexovaného sloupce. Druhý dotaz používá operátor LIKE v klauzuli WHERE. To vynutí SQL Server použít kontrolu clusterovaného indexu a najít data, která splňují podmínku klauzule WHERE. Hodnoty v EstimateRows a atributech EstimatedTotalSubtreeCost jsou menší pro první indexovaný dotaz, což znamená, že se zpracovává mnohem rychleji a používá méně prostředků než neindexovaný dotaz.

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;

Další kroky