Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Způsobuje, že Microsoft SQL Server nevykonává Transact-SQL příkazy. Místo toho SQL Server vrací podrobné informace o tom, jak jsou příkazy vykonávány.
Syntaxe
SET SHOWPLAN_TEXT { ON | OFF }
Poznámky
Nastavení je SET SHOWPLAN_TEXT nastaveno při spuštění nebo běhu a ne při parse.
Když SET SHOWPLAN_TEXT je ZAPNUTO, SQL Server vrací informace o provádění pro každý Transact-SQL příkaz bez jeho vykonání. Po zapnutí této možnosti se vrací informace o plánu provádění všech následujících příkazů SQL Serveru, dokud není možnost vypnuta. Například pokud CREATE TABLE je příkaz vykonán během SETSET SHOWPLAN_TEXT ZAPNUTÉHO, SQL Server vrátí chybovou zprávu z následného příkazu SELECT zahrnující stejnou tabulku, která uživatele informuje, že daná tabulka neexistuje. Následné odkazy na tuto tabulku proto selžou. Když SET SHOWPLAN_TEXT je VYPNUTO, SQL Server vykonává příkazy bez generování reportu s informacemi o plánu vykonání.
SET SHOWPLAN_TEXTje určen k vrácení čitelného výstupu pro příkazové řádky Microsoft Win32, jako je utilita sqlcmd. SET SHOWPLAN_ALL vrací podrobnější výstup určený pro použití s programy navrženými pro zpracování jeho výstupu.
SET SET SHOWPLAN_TEXT a SETSET SHOWPLAN_ALL nelze specifikovat v uložené procedurě. Musí to být jediné výpisy v dávce.
SET SHOWPLAN_TEXTvrací informace jako sadu řádků, které tvoří hierarchický strom reprezentující kroky, které provádí procesor dotazů SQL Server při provádění každého příkazu. Každý příkaz zobrazený ve výstupu obsahuje jeden řádek s textem příkazu, následovaný několika řádky s detaily výkonných kroků. Tabulka ukazuje sloupec, který výstup obsahuje.
| Název sloupce | Description |
|---|---|
| StmtText | Pro řádky, které nejsou typu PLAN_ROW, tento sloupec obsahuje text Transact-SQL příkazu. Pro řádky typu PLAN_ROW tento sloupec obsahuje popis operace. Tento sloupec obsahuje fyzický operátor a může volitelně obsahovat i logický operátor. Tento sloupec může být také následován popisem, který určuje fyzický operátor. Pro více informací o fyzikálních operátorech viz sloupec Argument v SET SHOWPLAN_ALL (Transact-SQL). |
Pro více informací o fyzických a logických operátorech, které lze vidět ve výstupu Showplan, viz Showplan Logické a fyzikální operátory Reference
Povolení
Pro použití SETSET SHOWPLAN_TEXTmusíte mít dostatečná oprávnění k provádění příkazů, na kterých SETSET SHOWPLAN_TEXT se vykonává, a musíte mít SHOWPLAN oprávnění pro všechny databáze obsahující odkazované objekty.
Pro příkazy SELECT, INSERT, UPDATE, DELETEstored_procedure EXEC a EXEC user_defined_function, aby uživatel vytvořil 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 DDL, USE database_name, SET, DECLARE, dynamic SQL a podobně, jsou potřeba pouze příslušná oprávnění k vykonání Transact-SQL příkazů.
Examples
Tento příklad ukazuje, jak SQL Server používá indexy při zpracování příkazů.
Toto je dotaz pomocí indexu:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.Product
WHERE ProductID = 905;
GO
SET SHOWPLAN_TEXT OFF;
GO
Tady je sada výsledků:
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)
Zde je dotaz bez indexu:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET SHOWPLAN_TEXT OFF;
GO
Tady je sada výsledků:
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]))
Viz také
Operátory (Transact-SQL)
SET Příkazy (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)