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
Azure SQL Managed Instance
Azure Synapse Analytics (dedicated SQL pool only)
SQL-Analytics-Endpunkt in Microsoft Fabric
Lager in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Dies bewirkt, dass SQL Server Transact-SQL-Anweisungen nicht ausführt. Stattdessen gibt SQL Server detaillierte Informationen zur Ausführung der Anweisungen in Form eines genau definierten XML-Dokuments zurück.
Transact-SQL-Syntaxkonventionen
Syntax
SET SHOWPLAN_XML { ON | OFF }
Hinweise
Die Einstellung wird SET SHOWPLAN_XML zur Ausführung oder Laufzeit und nicht zur Analysezeit festgelegt.
Wenn SET SHOWPLAN_XML ON ist, gibt SQL Server für jede Anweisung Ausführungsplaninformationen zurück, ohne sie auszuführen, und Transact-SQL Anweisungen werden nicht ausgeführt. Wenn diese Option auf ON festgelegt ist, werden Ausführungsplaninformationen zu allen weiteren Transact-SQL-Anweisungen zurückgegeben, bis die Option auf OFF festgelegt wird. Wenn beispielsweise eine CREATE TABLE Anweisung ausgeführt wird, während SETSET SHOWPLAN_XML AN ist, liefert SQL Server eine Fehlermeldung von einer nachfolgenden SELECT-Anweisung, die dieselbe Tabelle enthält; die angegebene Tabelle existiert nicht. Daher schlagen spätere Verweise auf diese Tabelle fehl. Wenn SET SHOWPLAN_XML AUS ist, führt SQL Server die Anweisungen aus, ohne einen Bericht zu generieren.
SET SHOWPLAN_XML ist dazu gedacht, die Ausgabe als nvarchar(max) für Anwendungen wie das sqlcmd-Dienstprogramm zurückzugeben, wobei die XML-Ausgabe anschließend von anderen Tools zur Darstellung und Verarbeitung der Abfrageplaninformationen verwendet wird.
Hinweis
Die dynamische Managementansichtsys.dm_exec_query_plan, , liefert im XML-Datentyp dieselben Informationen wie SET SHOWPLAN XML. 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 in einem gespeicherten Verfahren nicht spezifiziert werden. Sie muss die einzige Anweisung in einem Batch sein.
SET SHOWPLAN_XML gibt Informationen als Satz von XML-Dokumenten zurück. Jede Charge nach der SET SHOWPLAN_XML ON-Anweisung wird in der Ausgabe durch ein einzelnes Dokument reflektiert. 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 in SQL Server Management Studio "Actual Execution Plan einbeziehen" ausgewählt wurde, erzeugt diese SET Option keine XML-Showplan-Ausgabe. Löschen Sie vor der Nutzung dieser SET Option den Button 'Actual Execution Plan' einfügen.
Geschätzte Ausführungspläne über SSMS sind SET SHOWPLAN_XML für dedizierte SQL-Pools (früher SQL DW) und dedizierte SQL-Pools in Azure Synapse Analytics verfügbar. Zum Abrufen eines tatsächlichen Ausführungsplans für dedizierte SQL-Pools (früher SQL DW) und dedizierte SQL-Pools in Azure Synapse Analytics gibt es verschiedene Befehle. Weitere Informationen finden Sie unter Überwachen der Workload Ihres dedizierten SQL-Pools von Azure Synapse Analytics mit DMVs.
Speicherort der SHOWPLAN-Ausgabe
Das Dokument, das das XML-Schema für das von ausgegebene SET SHOWPLAN_XML XML enthält, wird während der Einrichtung in ein lokales Verzeichnis auf dem Computer kopiert, auf dem Microsoft SQL Server installiert ist. Das Dokument findet sich auf dem Laufwerk, das die SQL Server-Installationsdateien enthält, und ist unter einem Pfad ähnlich dem folgenden zugänglich:
\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 140\ verwenden, da der erste Knoten des @@VERSION-Werts 14 ist. Bei SQL Server 2019 ist der erste Wert von @@VERSION 15. Bei SQL Server 2022 ist der erste Wert von @@VERSION 16.
Das Showplan-Schema finden Sie auch unter Microsoft SQL Server XML Schemas.
Berechtigungen
Um zu nutzen SETSET SHOWPLAN_XML, müssen Sie ausreichende Berechtigungen haben, um die Anweisungen auszuführen, auf denen SETSET SHOWPLAN_XML ausgeführt wird, und Sie benötigen SHOWPLAN-Berechtigung für alle Datenbanken, die referenzierte Objekte enthalten.
Um für SELECT-, INSERT-, UPDATE-, DELETE-, EXEC *stored_procedure*- und EXEC *user_defined_function*-Anweisungen einen Showplan zu erstellen, muss der Benutzer :
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, z. B. DDL, USE *database_name*, SET, DECLARE, dynamische SQL-Anweisungen usw. werden nur die entsprechenden Berechtigungen für die Ausführung der Transact-SQL-Anweisungen benötigt.
Beispiele
Die beiden folgenden Anweisungen nutzen 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 Gleich (=) in der WHERE-Klausel auf eine indizierte Spalte angewendet. In der zweiten Abfrage wird der LIKE-Operator in der WHERE-Klausel verwendet. Deshalb muss SQL Server einen Scan des gruppierten Indexes ausführen, um die Daten zu finden, die der Bedingung in der WHERE-Klausel entsprechen. Die Werte in den Attributen EstimateRows und EstimatedTotalSubtreeCost sind bei der ersten indizierten Abfrage kleiner, was auf eine deutlich schnellere Verarbeitung und die Verwendung von weniger Ressourcen als bei der nicht indizierten Abfrage hinweist.
USE AdventureWorks2022;
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;