Megosztás a következőn keresztül:


SETT 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.

Ha a SET SHOWPLAN_XML be van kapcsolva, az SQL Server az egyes utasítások végrehajtási tervadatait adja vissza végrehajtás nélkül, és Transact-SQL utasítások végrehajtása nem történik meg. 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. Ha például egy CREATE TABLE utasítást hajt végre a SET SHOWPLAN_XML bekapcsolva, az SQL Server egy hibaüzenetet ad vissza egy későbbi SELECT utasításból, amely ugyanazt a táblát tartalmazza; a megadott tábla nem létezik. Ezért a tábla későbbi hivatkozásai sikertelenek. Ha a SET SHOWPLAN_XML ki van kapcsolva, az SQL Server jelentés létrehozása nélkül hajtja végre az utasításokat.

A SET SHOWPLAN_XML nvarchar(max) formájában adja vissza a kimenetet olyan alkalmazásokhoz, mint például az sqlcmd segédprogram, ahol az XML-kimenetet később más eszközök használják a lekérdezésterv adatainak megjelenítésére és feldolgozására.

Jegyzet

A dinamikus felügyeleti nézet (sys.dm_exec_query_plan) ugyanazt az információt adja vissza, mint a SET SHOWPLAN XML az 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).

A SET SHOWPLAN_XML nem adható meg tárolt eljáráson belül. Ez lehet a köteg egyetlen utasítása.

A SET SHOWPLAN_XML XML-dokumentumok halmazaként adja vissza az adatokat. A SET SHOWPLAN_XML ON utasítás utáni kötegek egyetlen dokumentum kimenetében jelennek meg. 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 Tényleges végrehajtási terv belefoglalása van kiválasztva az SQL Server Management Studióban, ez a SET beállítás nem hoz létre XML Showplan-kimenetet. A SET beállítás használata előtt törölje a Tényleges végrehajtási terv belefoglalása gombot.

A becsült végrehajtási tervek SSMS-en és SET-SHOWPLAN_XML keresztül érhetők el dedikált SQL-készletekhez (korábban SQL DW) és dedikált SQL-készletekhez az Azure Synapse Analyticsben. 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

A SET SHOWPLAN_XML xml-kimenetéhez tartozó XML-sémát tartalmazó dokumentum a telepítés során a Microsoft SQL Servert futtató számítógépen található helyi könyvtárba lesz másolva. 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

A SET SHOWPLAN_XML használatához megfelelő engedélyekkel kell rendelkeznie ahhoz, hogy végrehajtsa azokat az utasításokat, amelyeken a SET SHOWPLAN_XML végrehajtásra kerül, és minden hivatkozott objektumot tartalmazó adatbázishoz SHOWPLAN engedéllyel kell rendelkeznie.

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

Az alábbi két utasítás a SET SHOWPLAN_XML beállításokat használja annak bemutatására, hogy az SQL Server hogyan elemzi és optimalizálja az indexek használatát a lekérdezésekben.

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