SET SHOWPLAN_XML (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (dedicated SQL pool only)SQL analytics endpoint a Microsoft Fabric-benRaktár a Microsoft Fabric-benSQL adatbázis a Microsoft Fabric-ben

Az SQL Server nem hajt végre Transact-SQL utasításokat. Ehelyett az SQL Server részletes információkat ad vissza arról, hogy az utasítások hogyan lesznek végrehajtva egy jól definiált XML-dokumentum formájában.

Transact-SQL szintaxis konvenciói

Szintaxis

SET SHOWPLAN_XML { ON | OFF }

Megjegyzések

A SET SHOWPLAN_XML beállítása végrehajtáskor vagy futtatáskor van beállítva, és nem elemzési időpontban.

Amikor SET SHOWPLAN_XML ON, SQL Server minden utasításra végrehajtási terv információt ad vissza anélkül, hogy végrehajtaná, és Transact-SQL utasítások nem kerülnek végrehajtásra. Ha be van kapcsolva a beállítás, a rendszer az összes további Transact-SQL utasítással kapcsolatos végrehajtási tervadatokat adja vissza, amíg a beállítás ki nem van kapcsolva. Például, ha egy CREATE TABLE utasítást BEKAPCSOLVA SETSET SHOWPLAN_XML hajtanak végre, az SQL Server hibáüzenetet ad vissza egy későbbi SELECT utasításból, amely ugyanazt a táblát érinti; a megadott tábla nem létezik. Ezért a tábla későbbi hivatkozásai sikertelenek. Amikor SET SHOWPLAN_XML KIKAPCSOLVA, az SQL Server lefuttatja az utasításokat anélkül, hogy jelentést generálna.

SET SHOWPLAN_XML célja, hogy nvarchar(max) formátumban térjen vissza olyan alkalmazásokhoz, mint a SQLCMD segédeszköz, ahol az XML kimenetet később más eszközök használják a lekérdezési terv információinak megjelenítésére és feldolgozására.

Jegyzet

A dinamikus menedzsment nézet, sys.dm_exec_query_plan, ugyanazt az információt adja vissza, mint SET a SHOWPLAN XML xml adattípusban. Ezt az információt a rendszer a query_plansys.dm_exec_query_plan oszlopából adja vissza. További információ: sys.dm_exec_query_plan (Transact-SQL).

SET SHOWPLAN_XML nem lehet definiálni egy tárolt eljárásban. Ez lehet a köteg egyetlen utasítása.

SET SHOWPLAN_XML XML dokumentumokból álló halmazként adja vissza az információt. Az ON utasítás után minden tétel SET SHOWPLAN_XML egyetlen dokumentumban jelenik meg a kimeneten. Minden dokumentum tartalmazza a kötegben lévő utasítások szövegét, majd a végrehajtási lépések részleteit. A dokumentum a becsült költségeket, a sorok számát, a elért indexeket és az elvégzett operátorok típusait, az illesztési sorrendet és a végrehajtási tervekkel kapcsolatos további információkat jeleníti meg.

Jegyzet

Ha az SQL Server Management Studio-ban a Include Actual Execution Plan opciót választják, ez SET az opció nem eredményez XML Showplan kimenetet. Töröld a Tényleges Végrehajtási Terv gombot , mielőtt ezt SET a lehetőséget használnád.

Becsült végrehajtási tervek SSMS-en keresztül, és SET SHOWPLAN_XML dedikált SQL poolokra (korábban SQL DW) és dedikált SQL poolokra is elérhetők az Azure Synapse Analytics-ben. A dedikált SQL-készletek (korábbi nevén SQL DW) és a dedikált SQL-készletek tényleges végrehajtási tervének lekéréséhez az Azure Synapse Analyticsben különböző parancsok érhetők el. További információ: Dedikált Azure Synapse Analytics SQL-készlet számítási feladatainak monitorozása DMV-khasználatával.

A SHOWPLAN-kimenet helye

Az XML kimenethez SET SHOWPLAN_XML tartozó XML sémát tartalmazó dokumentumot a beállítás során másolják egy helyi könyvtárba azon a számítógépen, amelyen a Microsoft SQL Server telepítve van. A dokumentum az SQL Server telepítési fájljait tartalmazó meghajtón található, az alábbihoz hasonló elérési úton:

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

Az előző útvonalon az SQL Server 2016 használja a csomópont 130\. A 130 szám a SELECT @@VERSIONáltal visszaadott érték első csomópontjából származik, ami 13. Az SQL Server 2017 esetében az elérési út 140\használna, mivel az @@VERSION értékének első csomópontja 14. Az SQL Server 2019 @@VERSION első értéke 15. AZ SQL Server 2022 @@VERSION első értéke 16.

A Showplan séma Microsoft SQL Server XML-sémák.

Engedélyek

Ahhoz, hogy SETSET SHOWPLAN_XMLhasználhasd, elegendő jogosultsággal kell rendelkezned a végrehajtott utasítások SETSET SHOWPLAN_XML végrehajtásához, és SHOWPLAN engedélyt kell kell tartalmazni minden hivatkozási objektumot tartalmazó adatbázishoz.

A SELECT, INSERT, UPDATE, DELETE, EXEC *stored_procedure*és EXEC *user_defined_function* utasításhoz a felhasználónak a következőnek kell lennie:

  • Rendelkezik a megfelelő engedélyekkel a Transact-SQL utasítások végrehajtásához.

  • RENDELKEZik SHOWPLAN-engedéllyel minden olyan adatbázisra, amely a Transact-SQL utasítások által hivatkozott objektumokat tartalmaz, például táblákat, nézeteket stb.

Az összes többi utasításhoz( például DDL, USE *database_name*, SET, DECLARE, dinamikus SQL stb.) csak a Transact-SQL utasítások végrehajtásához szükséges engedélyek szükségesek.

Példák

A következő két állítás a SET SHOWPLAN_XML beállításokat arra használja, hogy bemutassa, hogyan elemzi és optimalizálja az SQL Server az indexek lekérdezésekben történő használatát.

Az első lekérdezés egy indexelt oszlop WHERE záradékában az Egyenlőség összehasonlító operátort (=) használja. A második lekérdezés a WHERE záradék LIKE operátorát használja. Ez arra kényszeríti az SQL Servert, hogy fürtözött indexvizsgálatot használjon, és keresse meg a WHERE záradék feltételének megfelelő adatokat. A EstimateRows és a EstimatedTotalSubtreeCost attribútumok értéke kisebb az első indexelt lekérdezésnél, ami azt jelzi, hogy a lekérdezés feldolgozása sokkal gyorsabban történik, és kevesebb erőforrást használ, mint a nem indexelt lekérdezés.

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;

Következő lépések