Share via


XML 顯示計畫

在 Microsoft SQL Server 中,可利用各種方式產生 XML 格式的執行程序表執行計畫輸出。XML 格式的執行程序表輸出可以在不同電腦間移動,因此可在任何電腦上轉譯,甚至是未安裝 SQL Server 的電腦。您也可以利用 XML 技術 (例如 XPath、XQuery、XSLT、SAX 或 DOM 等),以程式設計方式處理 XML 格式的執行程序表輸出。SQL Server 支援 XML 執行程序表處理,它包含 XPath 與 XQuery 的內建查詢評估引擎。

您可以利用下列方法產生 XML 執行程序表輸出:

  • 從 SQL Server Management Studio 中的 [查詢編輯器] 工具列中,選取 [顯示評估的執行計畫][包括實際執行計畫]

  • 使用 Transact-SQL Showplan SET 陳述式選項 SHOWPLAN_XML 和 STATISTICS XML

  • 選取 SQL Server Profiler 事件類別 Showplan XMLShowplan XML for Query CompileShowplan XML Statistics Profile 來進行追蹤

  • 使用 sys.dm_exec_query_plan 動態管理函數

會為這些方法傳回 nvarchar(max) 資料類型的 XML 執行程序表,當您使用 sys.dm_exec_query_plan 時除外。當您使用此動態管理檢視時,會以 xml 資料類型傳回 XML 執行程序表。

位於下列位置的 SQL Server 安裝檔案會提供執行程序表的 XML 結構描述:

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

[!附註]

若查詢最佳化工具貿然終止查詢最佳化作業,XML 執行程序表輸出中會為 StmtSimple 元素傳回 StatementOptmEarlyAbortReason 屬性。此屬性可能顯示的值包括 TimeOutGoodEnoughPlanFoundMemoryLimitExceeded。若此屬性傳回 TimeOutGoodEnoughPlanFound,則不需要採取任何動作。傳回的執行程序表包含正確的結果。

若 StatementOptmEarlyAbortReason 屬性傳回 MemoryLimitExceeded,則產生的 XML 執行程序表仍會是正確的,但可能不是最佳化的。嘗試下列其中一種方式來增加可用記憶體:1) 降低伺服器上的負載。2) 為 SQL Server 增加可用記憶體。如需詳細資訊,請參閱<管理大型資料庫的記憶體>。3) 檢查使用 sp_configure 設定的 max server memory 選項,並增加此選項值 (若原始設定太低)。如需詳細資訊,請參閱<伺服器記憶體選項>。

關於執行程序表 XML 結構描述

執行程序表 XML 結構描述的版本指定由兩個部分組成,例如 m.n。其中 m 是主要版本號碼,而 n 是次要版本號碼。例如,"Version 2.5"。此版本號碼會出現在執行程序表 Showplan XML 結構描述文件的根元素中。例如:version="0.5"

執行程序表 XML 結構描述的回溯相容性

當主要版本號碼增加時,可能不會利用舊的結構描述來驗證新的 XML 執行程序表輸出。然而,若次要版本號碼增加時,則不會有影響。例如,若使用結構描述版本 0.5 來產生 XML 檢視計畫結構描述,會利用執行程序表 XML 結構描述版本 0.6 來驗證輸出。

XML 執行程序表的編碼方式

SQL Server 會使用 Unicode 格式 (每個字元兩個位元組) 將 XML 執行程序表傳送到用戶端。編碼規則如下:

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

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

    then send the char as 2 bytes, else send '?'

  • Tab 字元、新行字元和換行字元的編碼方式如下:

    • \t 的編碼方式是 '&#x9;'

    • \n 的編碼方式是 '&#xa;'

    • \r 的編碼方式是 '&#xd;'

將 XML 執行程序表輸出儲存到檔案中

使用 SHOWPLAN_XML 或 STATISTICS XML Transact-SQL SET 陳述式產生執行程序表輸出之後,您可以將輸出儲存到副檔名為 .sqlplan 的檔案中。例如,MyXMLShowplan.sqlplan。您可以在 SQL Server Management Studio 中開啟及檢視這些 .sqlplan 檔案。如需詳細資訊,請參閱<如何:以 XML 格式儲存執行計畫>。