原生 XML Web Service 中的指導方針和限制

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

原生 XML Web Service 要求適用下列指導方針和限制:

  • 當 SOAP 未命名工作階段 (SOAP 未命名工作階段只存在於一個要求的持續時間內) 要求交易通知,且包含的是 BEGIN TRANSACTION 陳述式,而非 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 陳述式時,伺服器會回復交易,但是不會將回復交易通知節點包含在 SOAP 回應中。

  • 只有在支援 HTTP API (Http.sys) 的 Windows 作業系統版本上執行的 SQL Server 執行個體才支援原生 XML Web 服務。如果您嘗試在不符合此作業系統需求以及不支援 Http.sys 的 SQL Server 執行個體上部署原生 XML Web Service,「資料定義語言」作業將會失敗,而且不會發生原生接聽的動作。

  • 如果 SQL Server 執行個體是在 Windows XP Professional 上執行,您可能會無法成功建立端點。例如,如果 Internet Information Services (IIS) 正在執行,嘗試執行 CREATE ENDPOINT 陳述式會失敗並傳回下列錯誤:「嘗試註冊端點 'endpointName' 時,發生錯誤 ('0x80070020')」。

    此錯誤指出 SQL Server 執行個體與 IIS 之間發生處理序衝突,因為 IIS 在 Window XP 下接聽 80 通訊埠。若要解決此問題,請執行以下步驟:

    • 停止 World Wide Web 服務

    • 使用通訊埠 80 以外的通訊埠編號來重新執行 CREATE ENDPOINT。

  • 您可以設定端點以使用多個通訊埠,但您不能指定兩個相同類型的通訊埠。例如,您可以指定一個明確的通訊埠以及一個 SSL 通訊埠,而不是兩個明確的通訊埠或是兩個 SSL 通訊埠。

  • 不支援資料表值使用者定義函數。

  • SOAP 不支援將擴充預存程序公開成 Web 方法。

  • 您無法停用非 HTTP 端點 (端點的狀態可以設定為僅針對 HTTP 端點停用)。

  • 雖然 SOAP 規格明定不允許 SOAP 要求和回應中的 XML 處理指示,但是 SQL Server 並不會強制執行此限制。如果處理指示 (PI) 存在於 SOAP 要求的封套中,伺服器就會忽略它們。如果 PI 出現在 XML 參數的內容中,會將它們保存為 XML 資料的一部分。SOAP 回應不應包含處理指示,除非它們屬於已擷取 XML 參數的一部分。此行為的其中一個含義為 SOAP 用戶端應用程式可能不會接受包含 PI 的 xml 資料類型資料列執行個體值,或是應用程式有可能去除 SQL Server 所傳回的 XML 類型中所包含的 PI。如果這是重要的狀況,您可以建立 Web 服務,以便在服務將 PI 傳送回 SOAP 用戶端前先轉換任何 xml 資料類型為 NVarChar 或 VarBinary 類型。

  • 為了達到與 Visual Studio 2005 交互使用的最大可能性,請確保任何用於端點 Web 方法中的命名空間,和任何也用於端點的 xml 資料類型結構描述搭配使用的命名空間不同。

  • 端點所傳回的 WSDL 結果可能包含無效的 XSD 結構描述,例如在下列任一個狀況下匯入一次以上的單一命名空間:

    • 端點包含 XML 類型的多個參數,這些參數參考不同的結構描述集合,而每一個集合都定義相同的命名空間。

    • 端點所包含的 XML 類型參數會參考預先定義的命名空間 URI,該 URI 是供 SQL Server 中的原生 XML Web 服務使用。下表列出此狀況下可能適用的預先定義之命名空間 URI。

      前置詞

      命名空間 URI

      sql

      https://schemas.microsoft.com/sqlserver/2004/SOAP

      sqloptions

      https://schemas.microsoft.com/sqlserver/2004/SOAP/Options

      sqlsoaptypes

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types

      sqlmessage

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlMessage

      sqlparameter

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlParameter

      sqlresultstream

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlResultStream

      sqlrowcount

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlRowCount

      sqltransaction

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlTransaction

      sqltypes

      https://schemas.microsoft.com/sqlserver/2004/sqltypes

      xml

      http://www.w3.org/XML/1998/namespace

      xsd

      http://www.w3.org/2001/XMLSchema

      xsi

      http://www.w3.org/2001/XMLSchema-instance