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í SET SHOWPLAN_TEXT je nastaveno při spuštění nebo běhu a nikoli při parse.
Když je SET SHOWPLAN_TEXT zapnuto, SQL Server vrací informace o vykoná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 je příkaz CREATE TABLE vykonán, zatímco je SET SHOWPLAN_TEXT zapnuto, 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ž je SET SHOWPLAN_TEXT vypnutý, SQL Server vykonává příkazy bez generování reportu s informacemi o plánu vykonání.
SET SHOWPLAN_TEXT je určen k vracení č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 SHOWPLAN_TEXT a SET SHOWPLAN_ALL nelze zadat v uložené procedurě. Musí to být jediné výpisy v dávce.
SET SHOWPLAN_TEXT vrací informace jako sadu řádků, které tvoří hierarchický strom reprezentující kroky, které SQL Server procesor dotazů provádí 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í SET SHOWPLAN_TEXT musíte mít dostatečná oprávnění k vykonání příkazů, na kterých se vykonává SET SHOWPLAN_TEXT, a musíte mít SHOWPLAN oprávnění pro všechny databáze obsahující odkazované objekty.
Pro příkazy SELECT, INSERT, UPDATE, DELETE , EXEC stored_procedure a EXEC user_defined_function musí uživatel vytvořit Showplan:
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)
Příkazy SET (Transact-SQL)
NASTAV SHOWPLAN_ALL (Transact-SQL)