WSDL の使用

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。

Web サービス記述言語 (WSDL) は、HTTP エンドポイントに公開される RPC 関数の Web インターフェイスの定義や、エンドポイントの SQL バッチ機能の記述に使用します。クライアントは、SQL Server のインスタンスからの WSDL 応答を要求し、その応答を使用して、サーバーに対する RPC 要求と SQL バッチ要求を生成できます。これを行うには、WSDL の種類をサポートするように構成された HTTP エンドポイントを使用します。WSDL 応答の実体は、要求時にエンドポイントに関連付けられた RPC 関数に基づいて動的に生成された XML ドキュメントです。

注意

WSDL の背景情報については、W3C (World Wide Web Consortium) の Web サイト (http://www.w3c.org) にある WSDL 1.1 仕様を参照してください。

WSDL の提供をサポートするように構成された HTTP エンドポイントでは、WSDL 要求を送信するクライアントへの応答に使用する、次のいずれかの WSDL 構成を指定できます。

  • 既定の WSDL

  • カスタマイズされた WSDL

既定の WSDL オプションが提供されるように SQL Server を構成すると、既定の WSDL (拡張 WSDL) 形式および簡略化された WSDL 形式の 2 種類の WSDL がサポートされます。

どの WSDL ドキュメントでも、エンドポイントでサポートされるメソッドを記述できますが、既定の WSDL では、XML スキーマ (XSD) の追加機能を使用できます。これにより、使用可能であるかエンドポイントによって公開されるメソッド、データ型、パラメータ、および戻り値に関する記述をより詳細に提供できます。

古いクライアントとの下位互換性を維持する必要がある場合がある、簡略化された WSDL では、プリミティブ型のみを必要とする非常に基本的な XSD スキーマが使用されます。既定の WSDL と簡略化された WSDL のどちらも、特定のクライアントに適した WSDL コンテンツが提供されない場合には、サーバーを更新し、カスタマイズされた WSDL を必要に応じて提供できます。

WSDL 応答は、WSDL 要求を送信する Web サービス クライアントが HTTP エンドポイントに初めて接続したときに、SQL Server のインスタンスによって生成され、返されます。

SQL Server による WSDL のサポート

エンドポイントを定義するときに、CREATE ENDPOINTTransact-SQL ステートメントの WSDL 引数を使用すると、エンドポイントの Web プログラミングが可能な機能を説明する WSDL 応答が、サーバーによって生成され、返されるかどうかを指定できます。WSDL=NONE という値を使用してエンドポイントを確立した場合、サーバーから WSDL 応答は返されません。

エンドポイントの作成時に WSDL=DEFAULT を指定した場合など、既定の WSDL の生成を指定した場合、サーバーによって返される WSDL の形式は、クライアントが HTTP エンドポイントへの接続に使用した URL 文字列によって異なります。クライアントは、WSDL の要求に次のいずれかの URL 形式を使用できます。

  • 既定の WSDL

    これは、エンドポイントへの接続に http://server/endpoint_path?wsdl という URL を使用したときに返される、完全な拡張 WSDL 応答です。この形式では、より複雑な SQL 型のマッピングをサポートするために、XSD 派生型が使用されます。詳細については、「既定の WSDL」を参照してください。

  • 単純な WSDL

    これは、すべての SQL Server システム データ型をネイティブ XSD 型にマップする、既定の形式が短く簡略化された WSDL です。この形式は、エンドポイントへの接続に http://server/endpoint_path?wsdlsimple という URL を使用したときに返されます。詳細については、「単純な WSDL」を参照してください。

  • カスタム WSDL

    SQL Server のインスタンスによって返された既定の WSDL または簡略化された WSDL がクライアントに受け入れられなかった場合、カスタム WSDL を提供するように指定できます。このオプションを使用するには、追加のコードをデザインおよび実装する必要があります。このように、ストアド プロシージャを使用して、HTTP ベースのクエリでカスタム WSDL を種類として指定したクライアントに、カスタマイズされた WSDL コンテンツを生成して返すことができます。詳細については、「カスタム WSDL サポートの実装」を参照してください。

WSDL のコンテンツ

Web サービス記述言語 (WSDL) インスタンスは、WSDL 名前空間 (https://schemas.xmlsoap.org/wsdl) を指定するルート <definitions> 要素を持ち、ネットワーク エンドポイントまたはポートのコレクションとして一連の Web サービスを定義する XML ドキュメントです。一般的な 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

1 つ以上のエンドポイントでサポートされる操作の抽象セット。

wsdl:binding

特定の種類のポートのプロトコルとデータ形式に関する具体的な仕様。

wsdl:service

関連するエンドポイントのコレクション。

WSDL のサポートに使用されるシステム ストアド プロシージャ

SQL Server のネイティブ XML Web サービスに含まれている次のシステム ストアド プロシージャにより、既定の WSDL および単純な 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 メソッド ストアド プロシージャの権限のみです。詳細については、「SQL プログラミング機能の Web への公開」を参照してください。