Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Dies bewirkt, dass Microsoft SQL Server keine Transact-SQL-Anweisungen ausführt. Stattdessen gibt SQL Server Informationen zur Ausführung der Anweisungen zurück.
Transact-SQL-Syntaxkonventionen
Syntax
SET SHOWPLAN_TEXT { ON | OFF }
Hinweise
Die Einstellung von SET SHOWPLAN_TEXT wird zur Ausführung oder Laufzeit und nicht zur Analysezeit festgelegt.
Wenn SET SHOWPLAN_TEXT ON ist, gibt SQL Server für jede Transact-SQL-Anweisung Ausführungsinformationen zurück, ohne sie auszuführen. Wenn diese Option auf ON festgelegt ist, werden Ausführungsplaninformationen zu allen weiteren SQL Server-Anweisungen zurückgegeben, bis die Option auf OFF festgelegt wird. Wenn beispielsweise eine CREATE TABLE Anweisung ausgeführt wird, während SETSET SHOWPLAN_TEXT ON ist, liefert SQL Server eine Fehlermeldung von einer nachfolgenden SELECT-Anweisung mit derselben Tabelle, die den Benutzer darüber informiert, dass die angegebene Tabelle nicht existiert. Daher schlagen spätere Verweise auf diese Tabelle fehl. Wenn SET SHOWPLAN_TEXT AUS ist, führt SQL Server Anweisungen aus, ohne einen Bericht mit Ausführungsplaninformationen zu generieren.
SET SHOWPLAN_TEXTsoll lesbare Ausgaben für Microsoft Win32-Eingabeaufforderungsprogramme wie das sqlcmd-Dienstprogramm zurückgeben. SET SHOWPLAN_ALL gibt detailliertere Ausgaben zurück, die für Programme gedacht sind, die für die Verarbeitung der Ausgabe konzipiert sind.
SET SET SHOWPLAN_TEXT und SETSET SHOWPLAN_ALL kann in einem gespeicherten Verfahren nicht spezifiziert werden. Sie müssen die einzigen Anweisungen in einem Batch sein.
SET SHOWPLAN_TEXTgibt Informationen als eine Menge von Zeilen zurück, die einen hierarchischen Baum bilden, der die Schritte repräsentiert, die der SQL Server-Abfrageprozessor beim Ausführen jeder Anweisung ausführt. Jede in der Ausgabe widergespiegelte Anweisung enthält zuerst eine Zeile mit dem Text der Anweisung, auf die mehrere Zeilen mit den Details der Ausführungsschritte folgen. In der Tabelle wird die in der Ausgabe enthaltene Spalte dargestellt.
| Spaltenname | BESCHREIBUNG |
|---|---|
| StmtText | Für Zeilen, die nicht vom Typ PLAN_ROW sind, enthält diese Spalte den Text der Transact-SQL-Anweisung. Für Zeilen vom Typ PLAN_ROW enthält diese Spalte eine Beschreibung des Vorgangs. Diese Spalte enthält den physischen Operator und optional auch den logischen Operator. Auf die Spalte kann auch eine Beschreibung folgen, die vom physischen Operator bestimmt wird. Weitere Informationen zu physikalischen Operatoren finden Sie in der Spalte Argument in SET SHOWPLAN_ALL (Transact-SQL). |
Weitere Informationen zu den physischen und logischen Operatoren, die in der Showplanausgabe angezeigt werden, finden Sie unter Referenz zu logischen und physischen Showplanoperatoren.
Berechtigungen
Um zu nutzen SETSET SHOWPLAN_TEXT, müssen Sie ausreichende Berechtigungen haben, um die Anweisungen auszuführen, auf denen SETSET SHOWPLAN_TEXT ausgeführt wird, und Sie benötigen SHOWPLAN-Berechtigung für alle Datenbanken, die referenzierte Objekte enthalten.
Für SELECT-, INSERT, UPDATE, DELETE, EXEC stored_procedure- und EXEC user_defined_function-Anweisungen muss der Benutzer zur Erstellung eines Showplans:
Die Berechtigungen für die Ausführung der Transact-SQL-Anweisungen
Die SHOWPLAN-Berechtigung für alle Datenbanken mit Objekten, auf die von den Transact-SQL-Anweisungen verwiesen wird, wie z. B. Tabellen, Sichten usw.
Für alle anderen Anweisungen wie DDL, USE database_name,SET , DECLARE, dynamisches SQL usw. werden nur die entsprechenden Berechtigungen zur Ausführung der Transact-SQL-Anweisungen benötigt.
Beispiele
Im folgenden Beispiel wird gezeigt, wie SQL Server bei der Verarbeitung von Anweisungen Indizes verwendet.
In der folgenden Abfrage wird ein Index verwendet:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.Product
WHERE ProductID = 905;
GO
SET SHOWPLAN_TEXT OFF;
GO
Im Folgenden wird das Resultset aufgeführt:
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)
In der folgenden Abfrage wird kein Index verwendet:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET SHOWPLAN_TEXT OFF;
GO
Im Folgenden wird das Resultset aufgeführt:
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]))
Weitere Informationen
Operatoren (Transact-SQL)
SET Anweisungen (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)