SET SHOWPLAN_XML (Transact-SQL)
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (jenom vyhrazený fond SQL)
koncový bod sql Analytics v Microsoft Fabric
Warehouse 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.
Ve službě Fabric Data Warehouse a koncovém bodu analýzy SQL je funkce SET SHOWPLAN_XML ve verzi Preview.
Syntax
SET SHOWPLAN_XML { ON | OFF }
Poznámky
Nastavení SHOWPLAN_XML SET je nastaveno při spuštění nebo spuštění, nikoli v době analýzy.
Pokud je SHOWPLAN_XML SET ZAPNUTO, SQL Server vrátí informace o plánu spuštění pro každý příkaz bez jeho provedení a Transact-SQL příkazy se nespustí. 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á. Pokud je například příkaz CREATE TABLE spuštěn, zatímco SET SHOWPLAN_XML je ZAPNUTO, SQL Server vrátí chybovou zprávu z následného příkazu SELECT zahrnujícího stejnou tabulku; zadaná tabulka neexistuje. Následné odkazy na tuto tabulku proto selžou. Když je funkce SET SHOWPLAN_XML vypnutá, SQL Server spustí příkazy bez generování sestavy.
SET SHOWPLAN_XML je určen k vrácení výstupu jako nvarchar(max) pro aplikace, jako je nástroj sqlcmd, kde výstup XML následně používá jiné nástroje k zobrazení a zpracování informací plánu dotazu.
Poznámka
Zobrazení dynamické správy, sys.dm_exec_query_plan
, vrátí stejné informace jako SET SHOWPLAN XML v xml datovém typu. Tyto informace se vrátí ze sloupce query_plan
sys.dm_exec_query_plan
. Další informace naleznete v tématu sys.dm_exec_query_plan (Transact-SQL).
V uložené proceduře nelze zadat SHOWPLAN_XML SET. Musí to být jediný příkaz v dávce.
SET SHOWPLAN_XML vrátí informace jako sadu dokumentů XML. Každá dávka po příkazu SET SHOWPLAN_XML ON se projeví 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 zahrnout skutečný plán provádění je vybrán v aplikaci SQL Server Management Studio, tato možnost SET nevygeneruje výstup xml showplan. Před použitím této možnosti SET vymažte tlačítko Zahrnout skutečný plán provádění.
Odhadované plány provádění prostřednictvím SSMS a SET SHOWPLAN_XML jsou dostupné pro vyhrazené fondy SQL (dříve SQL DW) a vyhrazené fondy SQL ve službě 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í schéma XML pro výstup XML pomocí set SHOWPLAN_XML se zkopíruje během instalace do místního adresáře v počítači, na kterém je nainstalován Microsoft SQL Server. 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í
Chcete-li použít sadu SET SHOWPLAN_XML, musíte mít dostatečná oprávnění ke spuštění příkazů, na kterých se spouští SHOWPLAN_XML SET, a musíte mít oprávnění SHOWPLAN 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
Dva příkazy, které následují, používají nastavení SET SHOWPLAN_XML k zobrazení způsobu, jakým SQL Server analyzuje a optimalizuje použ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
- příkazy
SET (Transact-SQL) - zobrazení odhadovaného plánu provádění