XML-Showplans

In Microsoft SQL Server kann mit verschiedenen Methoden eine Showplan-Ausführungsplanausgabe im XML-Format generiert werden. Showplanausgaben im XML-Format können zwischen Computern verschoben werden und somit auf jedem Computer gerendert werden, auch auf solchen ohne SQL Server. Eine Showplanausgabe im XML-Format kann auch programmgesteuert mit XML-Technologien, wie XPath, XQuery, XSLT, SAX, DOM usw., verarbeitet werden. Die XML-Showplanverarbeitung wird in SQL Server unterstützt. Es ist ein integriertes Abfrageauswertungsmodul für XPAth und XQuery enthalten.

Sie können XML-Showplanausgaben mit folgenden Methoden generieren:

  • Durch Auswählen von Geschätzten Ausführungsplan anzeigen oder Tatsächlichen Ausführungsplan einschließen auf der Symbolleiste des Abfrage-Editors in SQL Server Management Studio

  • Mithilfe der Optionen SHOWPLAN_XML und STATISTICS XML der Transact-SQL-SET-Anweisung für Showplan

  • Durch Auswählen der SQL Server Profiler-Ereignisklassen Showplan XML, Showplan XML for Query Compile und Showplan XML Statistics Profile für die Nachverfolgung

  • Mithilfe der dynamischen Verwaltungsfunktion sys.dm_exec_query_plan

XML-Showplans werden bei allen diesen Methoden mit dem nvarchar(max)-Datentyp zurückgegeben, außer wenn Sie sys.dm_exec_query_plan verwenden. Wenn Sie diese dynamische Verwaltungssicht verwenden, werden XML-Showplans mit dem xml-Datentyp zurückgegeben.

Das XML-Schema für Showplan wird zusammen mit den Installationsdateien für SQL Server an folgendem Speicherort bereitgestellt:

C:\Programme\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd

HinweisHinweis

Wenn der Abfrageoptimierer die Abfrageoptimierung vorzeitig beendet, wird das StatementOptmEarlyAbortReason-Attribut für das StmtSimple-Element in der XML-Showplanausgabe zurückgegeben. Die möglichen Werte, die für dieses Attribut angezeigt werden können, sind TimeOut, GoodEnoughPlanFound und MemoryLimitExceeded. Wenn TimeOut oder GoodEnoughPlanFound für dieses Attribut zurückgegeben wird, sind keine Maßnahmen erforderlich. Der zurückgegebene Showplan enthält die richtigen Ergebnisse.

Wenn MemoryLimitExceeded für das StatementOptmEarlyAbortReason-Attribut zurückgegeben wird, ist der erstellte XML-Showplan zwar weiterhin richtig aber möglicherweise nicht optimal. Versuchen Sie mit einer der folgenden Methoden, den verfügbaren Arbeitsspeicher zu erhöhen: 1) Verringern Sie die Last auf dem Server. 2) Vergrößern Sie den für SQL Server verfügbaren Arbeitsspeicher. Weitere Informationen finden Sie unter Verwalten von Arbeitsspeicher für große Datenbanken. 3) Überprüfen Sie die max server memory-Option, die mit sp_configure festgelegt wird, und erhöhen Sie den Wert, falls er zu niedrig ist. Weitere Informationen finden Sie unter Serverarbeitsspeicher-Optionen.

Informationen zum Showplan-XML-Schema

Die Versionsbezeichnung des Showplan-XML-Schemas besteht aus zwei Teilen, beispielsweise m.n. Dabei ist m die Hauptversionsnummer und n die Nebenversionsnummer. Beispiel: "Version 2.5". Diese Versionsnummer wird im Stammelement des Dokuments mit dem Showplan-XML-Schema angezeigt. Beispiel: version="0.5"version="0.5"

Abwärtskompatibilität von Showplan-XML-Schemas

Wenn die Hauptversionsnummer erhöht wird, erzeugt die Überprüfung neuer XML-Showplanausgaben in Bezug auf das alte Schema möglicherweise einen Fehler. Eine Erhöhung der Nebenversionsnummer hat jedoch keine Auswirkungen. Beispielsweise werden XML-Showplanausgaben, die Sie mit der Schemaversion 0.5 generiert haben, in Bezug auf die Showplan-XML-Schemaversion 0.6 erfolgreich überprüft.

Codierung von XML-Showplans

SQL Server sendet die XML-Showplanausgabe im Unicode-Format an den Client, wobei zwei Byte für jedes gesendete Zeichen verwendet werden. Die Codierungsregeln lauten wie folgt:

  • If (char >= 0x0020 && char <= 0xD7FF) oder (char == 0x0009) oder  

    (char == 0x000A) oder (char == 0x000D) oder (char >= 0xE000 && char <= 0xFFFD)

    THEN sende char als 2 Byte, ELSE sende '?'

  • Tabstopp-, Neue-Zeile- und Zeilenvorschubzeichen werden wie folgt codiert:

    • \t wird als '&#x9;' codiert

    • \n wird als '&#xa;' codiert

    • \r wird als '&#xd;' codiert

Speichern von XML-Showplanausgaben in einer Datei

Nachdem eine Showplanausgabe mit den Transact-SQL-SET-Anweisungen SHOWPLAN_XML oder STATISTICS XML generiert wurde, können Sie die Ausgabe in einer Datei mit der Erweiterung SQLPLAN speichern. Beispiel: MyXMLShowplan.sqlplan. Diese SQLPLAN-Dateien können in SQL Server Management Studio geöffnet und angezeigt werden. Weitere Informationen finden Sie unter Vorgehensweise: Speichern eines Ausführungsplans im XML-Format.