使用 WSDL
未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
Web 服務描述語言 (WSDL) 定義公開在 HTTP 結束點上任何 RPC 函數的 Web 介面定義,也描述結束點的 SQL 批次功能。用戶端可向 SQL Server 的執行個體要求 WSDL 回應,並透過已設定為支援 WSDL 類型的 HTTP 結束點,利用此 WSDL 回應來對伺服器產生 RPC 和 SQL 批次要求。WSDL 回應實際上是動態產生的 XML 文件,它以在要求時與結束點相關聯的 RPC 函數為基礎。
[!附註]
如需 WSDL 的背景資訊,請參閱 World Wide Web Consortium (W3C) 網站 http://www.w3c.org 上提供的 WSDL 1.1 規格。
已設定為支援 WSDL 項目的 HTTP 結束點,可以指定使用下列其中一個 WSDL 組態來回應提出 WSDL 要求的用戶端:
預設 WSDL
自訂 WSDL
當 SQL Server 設定為提供預設 WSDL 選項時,可提供兩種 WSDL 類型:預設或擴充的 WSDL,以及簡化 WSDL 格式。
雖然每個 WSDL 文件都會描述結束點所支援的方法,但預設的 WSDL 會使用 XML 結構描述 (XSD) 的其他功能,提供更多可在結束點上使用或公開的方法、資料類型、參數和傳回值的描述。
簡化 WSDL 格式可能是與舊用戶端的下層相容性所需要的,它使用非常基本的 XSD 結構描述,而這些結構描述只需要基本資料類型。如果預設或簡化 WSDL 都無法提供適合特定用戶端的正確 WSDL 內容,您可以視需要更新伺服器,來提供自訂版本的 WSDL。
當提出 WSDL 要求的 Web 服務用戶端在初始連接到 HTTP 結束點時,SQL Server 的執行個體會產生及傳回 WSDL 回應。
SQL Server 如何支援 WSDL
定義結束點時,會使用 CREATE ENDPOINTTransact-SQL 陳述式中的 WSDL 引數,指定伺服器是否要產生及傳回 WSDL 回應給結束點以描述其 Web 程式化功能。如果結束點是使用 WSDL=NONE 值建立,則伺服器不會傳回 WSDL 回應。
如果指定要產生預設的 WSDL,例如建立結束點時指定了 WSDL=DEFAULT,則伺服器所傳回的 WSDL 格式,將視用戶端連接到 HTTP 結束點時使用的 URL 字串而改變。用戶端可使用下列其中一個 URL 格式來要求 WSDL:
預設 WSDL
這是您使用 http://server/endpoint_path?wsdl URL 連接到結束點時,傳回的擴充 WSDL 回應的完整版本。此格式使用 XSD 衍生類型來提供更複雜 SQL 類型的對應支援。如需詳細資訊,請參閱<預設 WSDL>。
簡單 WSDL
這是將所有 SQL Server 系統資料類型對應到原生 XSD 類型的預設 WSDL 的簡化版本。當您使用 http://server/endpoint_path?wsdlsimple 作為 URL 來連接到結束點時,會傳回此格式。如需詳細資訊,請參閱<簡單 WSDL>。
自訂 WSDL
當用戶端不接受 SQL Server 執行個體所傳回的任一 WSDL 版本 (預設或簡化) 時,您可以指定自訂的 WSDL 項目。此選項需要您設計及實作額外的程式碼。如此一來,預存程序可用來產生及傳回自訂 WSDL 內容,作為用戶端在 HTTP 式的查詢中指定自訂 WSDL 類型的結果。如需詳細資訊,請參閱<實作自訂 WSDL 支援>。
WSDL 的內容
Web 服務描述語言 (WSDL) 執行個體是含有 root <definitions> 元素的 XML 文件,它指定 WSDL 命名空間 (https://schemas.xmlsoap.org/wsdl),並定義一組 Web 服務作為網路結束點或通訊埠的集合。典型 WSDL 文件具有下列最上層結構:
<wsdl:definitions>
<wsdl:types>...</wsdl:types>
<wsdl:message>...<wsdl:message/>
<wsdl:portType>...</wsdl:portType>
<wsdl:binding>...</wsdl:binding>
<wsdl:service>...<wsdl:service>
<wsdl:definitions>
正如這個簡化的 WSDL 格式的檢視所顯示,有幾個元素是用來指示 WSDL 文件內的主要區段。下表簡述每一個元素的角色。
元素 |
描述 |
---|---|
wsdl:types |
使用 XML 結構描述 (XSD) 或另一個類似的資料類型系統所建立的資料類型定義的容器元素。 |
wsdl:message |
通訊的訊息資料之定義。訊息可由多個部份組成,每一個部份可以是不同類型。 |
wsdl:portType |
一或多個結束點所支援的抽象作業集。 |
wsdl:binding |
特定通訊埠類型的具體通訊協定和資料格式規格。 |
wsdl:service |
相關結束點的集合。 |
用來支援 WSDL 的系統預存程序
下列系統預存程序隨原生 XML Web Service 併入 SQL Server 中,支援預設和簡單 WSDL 實作,並透過叫用來回應 WSDL 的要求:
sp_http_generate_wsdl_defaultcomplexorsimple
sp_http_generate_wsdl_defaultsimpleorcomplex
sp_http_generate_wsdl_complex
sp_http_generate_wsdl_simple
若要執行這些預存程序,需要有 public 角色的成員資格。在內部,這些預存程序中的每一個程序會查詢目錄來取得關於其他預存程序的資訊,而這些預存程序是透過結束點公開成為 Web 方法。使用者只需要具有對這些 Web 方法預存程序的權限。如需詳細資訊,請參閱<在 Web 上公開 SQL 可程式性>。