原生 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