SET SHOWPLAN_XML (Transact-SQL)

Gilt für:yes SQL Server (alle unterstützten Versionen) YesAzure SQL-Datenbank YesAzure SQL verwaltete Instanz yesAzure Synapse Analytics

Bewirkt, dass SQL Server keine Transact-SQL-Anweisungen ausführen. Stattdessen gibt SQL Server detaillierte Informationen dazu zurück, wie die Anweisungen in Form eines klar definierten XML-Dokuments ausgeführt werden.

Topic link iconTransact-SQL-Syntaxkonventionen

Syntax

SET SHOWPLAN_XML { ON | OFF }

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Hinweise

Die Einstellung von SET SHOWPLAN_XML wird zur Ausführungszeit und nicht zur Analysezeit festgelegt.

Wenn SET SHOWPLAN_XML auf ON festgelegt ist, gibt SQL Server Ausführungsplaninformationen für jede Anweisung zurück, ohne sie auszuführen, und Transact-SQL Anweisungen werden nicht ausgeführt. Nachdem diese Option auf ON festgelegt wurde, werden Ausführungsplaninformationen zu allen nachfolgenden Transact-SQL-Anweisungen zurückgegeben, bis die Option auf OFF festgelegt ist. Wenn z. B. eine CREATE TABLE-Anweisung ausgeführt wird, während SET SHOWPLAN_XML auf ON festgelegt ist, gibt SQL Server eine Fehlermeldung aus einer nachfolgenden SELECT-Anweisung zurück, die dieselbe Tabelle enthält. Die angegebene Tabelle ist nicht vorhanden. Daher schlagen spätere Verweise auf diese Tabelle fehl. Wenn SET SHOWPLAN_XML auf OFF festgelegt ist, führt SQL Server die Anweisungen aus, ohne einen Bericht zu generieren.

SET SHOWPLAN_XML soll die Ausgabe als nvarchar(max) für Anwendungen zurückgeben, wie z.B. das Hilfsprogramm sqlcmd, wobei die XML-Ausgabe nachfolgend von weiteren Tools für die Anzeige und Verarbeitung der Abfrageplaninformationen verwendet wird.

Hinweis

Die dynamische Verwaltungssicht sys.dm_exec_query_plan gibt dieselben Informationen wie SET SHOWPLAN XML im Datentyp XML zurück. Diese Informationen werden aus der Spalte query_plan von sys.dm_exec_query_plan zurückgegeben. Weitere Informationen finden Sie unter sys.dm_exec_query_plan (Transact-SQL).

SET SHOWPLAN_XML kann innerhalb einer gespeicherten Prozedur nicht angegeben werden. Sie muss die einzige Anweisung in einem Batch sein.

SET SHOWPLAN_XML gibt Informationen als eine Gruppe von XML-Dokumenten zurück. Jeder Batch nach der SET SHOWPLAN_XML ON-Anweisung ist in der Ausgabe als einzelnes Dokument enthalten. Jedes Dokument enthält den Text der Anweisungen im Batch gefolgt von den Details der Ausführungsschritte. Das Dokument zeigt die geschätzten Kosten, Anzahl von Zeilen, Indexzugriffe und Typen der ausgeführten Operatoren, Joinreihenfolge und weitere Informationen zu den Ausführungsplänen.

Hinweis

Wenn Tatsächlichen Ausführungsplan einschließen in SQL Server Management Studio ausgewählt ist, erzeugt diese SET-Option keine XML-Showplanausgabe. Deaktivieren Sie das Kontrollkästchen Tatsächlichen Ausführungsplan einschließen, bevor Sie diese SET-Option verwenden.

Speicherort der SHOWPLAN-Ausgabe

Das Dokument, das das XML-Schema für die XML-Ausgabe von SET SHOWPLAN_XML enthält, wird während des Setups in ein lokales Verzeichnis auf dem Computer kopiert, auf dem Microsoft SQL Server installiert ist. Das Dokument befindet sich auf dem Laufwerk, das die SQL Server Installationsdateien enthält, in einem Pfad ähnlich dem folgenden:

  • \Microsoft SQL Server\130\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd

Im vorherigen Pfad wird der Knoten 130\ von SQL Server 2016 verwendet. Die Zahl 130 wird vom ersten Knoten des von SELECT @@VERSION zurückgegebenen Werts abgeleitet, also 13. Für SQL Server 2017 würde der Pfad verwenden140\, da der erste Knoten seines @@VERSION Werts 14 ist. Für SQL Server 2019 ist der erste Wert aus @@VERSION 15.

Das Showplanschema kann auf dieser Website gefunden werden.

Berechtigungen

Für die Verwendung von SET SHOWPLAN_XML benötigen Sie für die Ausführung der Anweisungen, auf die SET SHOWPLAN_XML angewendet wird, ausreichende Berechtigungen sowie die SHOWPLAN-Berechtigung für alle Datenbanken mit Objekten, auf die verwiesen wird.

Damit die Anweisungen SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure und EXEC user_defined_function einen Showplan erstellen, benötigt der Benutzer Folgendes:

  • Sie verfügen über die entsprechenden Berechtigungen zum Ausführen 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, dynamische SQL usw. sind nur die entsprechenden Berechtigungen zum Ausführen der Transact-SQL-Anweisungen erforderlich.

Beispiele

Die beiden folgenden Anweisungen verwenden die SET SHOWPLAN_XML-Einstellungen, um zu zeigen, wie SQL Server die Verwendung von Indizes in Abfragen analysiert und optimiert.

In der ersten Abfrage wird der Vergleichsoperator (=) in der WHERE-Klausel auf eine indizierte Spalte angewendet. In der zweiten Abfrage wird der LIKE-Operator in der WHERE-Klausel verwendet. Dadurch wird SQL Server gezwungen, einen gruppierten Indexscan zu verwenden und die Daten zu finden, die die Bedingung der WHERE-Klausel erfüllen. Die Werte in den Attributen EstimateRows und EstimatedTotalSubtreeCost sind bei der ersten indizierten Abfrage kleiner, was auf eine deutlich schnellere Verarbeitung und die Verwendung weniger Ressourcen als bei der nicht indizierten Abfrage hinweist.

USE AdventureWorks2012;
GO
SET SHOWPLAN_XML ON;
GO
-- First query.
SELECT BusinessEntityID
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Production%';
GO
SET SHOWPLAN_XML OFF;

Siehe auch

SET-Anweisungen (Transact-SQL)