Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Ez okozza, hogy a Microsoft SQL Server nem hajt végre Transact-SQL utasításokat. Ehelyett az SQL Server részletes információkat ad arról, hogyan hajtják végre a kijelentéseket.
Transact-SQL szintaxis konvenciók
Szemantika
SET SHOWPLAN_TEXT { ON | OFF }
Megjegyzések
A SET SHOWPLAN_TEXT beállítása végrehajtáskor vagy futtatáskor van beállítva, és nem elemzési időpontban.
Amikor SET SHOWPLAN_TEXT ON, SQL Server minden Transact-SQL utasításhoz végrehajtási adatokat ad vissza anélkül, hogy végrehajtaná. Miután ezt az opciót bekapcsolták, a végrehajtási terv adatai az összes további SQL Server utasításról visszakerülnek, amíg az opció ki nem kapcsolódik. Például, ha egy CREATE TABLE utasítást BEKAPCSOLVA SETSET SHOWPLAN_TEXT hajtanak végre, az SQL Server egy következő SELECT utasításból származó hibaüzenetet ad vissza, amely ugyanazzal a táblával rendelkezik, és tájékoztatja a felhasználót, hogy a megadott tábla nem létezik. Ezért a tábla későbbi hivatkozásai sikertelenek. Amikor SET SHOWPLAN_TEXT KIKAPCSOLVA, az SQL Server végrehajtási terv információival rendelkező jelentés nélkül hajt végre utasításokat.
SET SHOWPLAN_TEXTa Microsoft Win32 parancssor-alkalmazások, például a sqlcmd segédprogram olvasható kimenetét szolgáltatja. SET SHOWPLAN_ALL részletesebb kimenetet ad, amelyeket programokkal terveztek használni, amelyek az output kezelésére terveztek.
SET SET SHOWPLAN_TEXT és SETSET SHOWPLAN_ALL nem lehet rögzített eljárásban megadni. Biztosan csak ezek a kijelentések egy adagban.
SET SHOWPLAN_TEXTaz információt sorokból álló halmazként adják vissza, amelyek hierarchikus fát alkotnak, és az SQL Server lekérdezésfeldolgozó által végrehajtott lépéseket jelképezik, amikor végrehajtja az egyes állításokat. Minden kimenetben megjelenő utasítás egyetlen sort tartalmaz az utasítás szövegével, majd több sort követ a végrehajtási lépések részleteivel. A táblázat azt az oszlopot mutatja, amelyet a kimenet tartalmaz.
| Oszlop név | Description |
|---|---|
| StmtText | Azokra a sorokra, amelyek nem PLAN_ROW típusúak, ez az oszlop tartalmazza a Transact-SQL állítás szövegét. Az PLAN_ROW típusú sorok esetében ez az oszlop tartalmazza a művelet leírását. Ez az oszlop tartalmazza a fizikai operátort, és opcionálisan tartalmazhatja a logikai operátort is. Ezt az oszlopot egy leírás is követheti, amelyet a fizikai operátor határoz meg. További információért a fizikai operátorokról lásd az Argument oszlopot (SET SHOWPLAN_ALLTransact-SQL) ben. |
További információért a Showplan kimenetben látható fizikai és logikai operátorokról lásd: Showplan logikai és fizikai operátorok hivatkozása
Permissions
Ahhoz, hogy SETSET SHOWPLAN_TEXThasználhasd, elegendő jogosultsággal kell rendelkezned a végrehajtott utasítások SETSET SHOWPLAN_TEXT végrehajtásához, és SHOWPLAN engedélyt kell kell tartalmazni minden hivatkozási objektumot tartalmazó adatbázishoz.
SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure és EXEC user_defined_function utasításokhoz a Showplan elkészítéséhez a felhasználónak a következőket kell elkészítenie:
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.
Minden más utasításnál, mint például a DDL, USE database_name, SET, DECLARE, dinamikus SQL stb., csak a megfelelő jogosultságokra van szükség a Transact-SQL utasítások végrehajtásához.
Példák
Ez a példa bemutatja, hogyan használja az SQL Server az indexeket az utasítások feldolgozása során.
Ez a lekérdezés egy indexen keresztül:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.Product
WHERE ProductID = 905;
GO
SET SHOWPLAN_TEXT OFF;
GO
Az eredményhalmaz a következő:
StmtText
---------------------------------------------------
SELECT *
FROM Production.Product
WHERE ProductID = 905;
StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Clustered Index Seek(OBJECT:([AdventureWorks2022].[Production].[Product].[PK_Product_ProductID]), SEEK:([AdventureWorks2022].[Production].[Product].[ProductID]=CONVERT_IMPLICIT(int,[@1],0)) ORDERED FORWARD)
Íme a lekérdezés, amely nem használ indexet:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET SHOWPLAN_TEXT OFF;
GO
Az eredményhalmaz a következő:
StmtText
------------------------------------------------------------------------
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
StmtText
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Clustered Index Scan(OBJECT:([AdventureWorks2022].[Production].[ProductCostHistory].[PK_ProductCostHistory_ProductCostID]), WHERE:([AdventureWorks2022].[Production].[ProductCostHistory].[StandardCost]<[@1]))
Lásd még:
Operátorok (Transact-SQL)
SET Utasítások (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)