Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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ási vagy futási időre van beállítva, nem parse időben.
Amikor a SET SHOWPLAN_TEXT BEKAPCSOLVA, az SQL Server minden Transact-SQL utasításhoz végrehajtási adatokat ad vissza anélkül, hogy azt futtatná. 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 akkor futtatunk, amikor a SET SHOWPLAN_TEXT ON van, az SQL Server egy hibaüzenetet ad vissza egy későbbi SELECT utasításból, 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 a SET SHOWPLAN_TEXT KIKAPCSOLVA, az SQL Server utasításokat futtat anélkül, hogy jelentést generálna végrehajtási terv információval.
A SET SHOWPLAN_TEXT arra szolgál, hogy olvasható kimenetet adjon vissza Microsoft Win32 parancssor-alkalmazásokhoz, például a sqlcmd segédprogramhoz. A SET SHOWPLAN_ALL részletesebb kimenetet ad, amelyeket programokkal terveztek használni, amelyek a kimenet kezelésére terveztek.
A SET SHOWPLAN_TEXT és a SET SHOWPLAN_ALL nem lehet megadni egy tárolt eljárásban. Biztosan csak ezek a kijelentések egy adagban.
A SET SHOWPLAN_TEXT az adatokat sorokból álló halmazként adja 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 utasí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 a SET SHOWPLAN_ALL (Transact-SQL ) argumentum oszlopát. |
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 a SET SHOWPLAN_TEXT-t használhasd, elegendő jogosultsággal kell rendelkezned ahhoz, hogy végrehajtsd azokat az utasításokat, amelyeken a SET SHOWPLAN_TEXT végrehajtódik, és SHOWPLAN engedélyt kell szerezned minden hivatkozási objektumot tartalmazó adatbázishoz.
A 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:
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 és így tovább, 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)