ネイティブ XML Web サービスのガイドラインと制限事項

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

ネイティブ XML Web サービス要求には、次のガイドラインと制限事項が適用されます。

  • SOAP の名前のないセッション (SOAP の名前のないセッションは、1 つの要求の存続期間の間のみ存在します) がトランザクション通知を要求したときに、BEGIN TRANSACTION ステートメントが含まれており、COMMIT TRANSACTION または ROLLBACK TRANSACTION ステートメントを含まれていない場合、サーバーはトランザクションをロールバックしますが、ロールバック トランザクション通知ノードを含まずに SOAP 応答を返します。

  • ネイティブ XML Web サービスは、HTTP API (Http.sys) をサポートするバージョンの Windows オペレーティング システムで実行されている SQL Server のインスタンスでのみサポートされます。SQL Server のインスタンスが、このようなオペレーティング システムの要件を満たしていない場合、または Http.sys をサポートしていない場合に、ネイティブ XML Web サービスを配置しようとすると、データ定義言語の操作が失敗し、ネイティブのリッスンが行われません。

  • SQL Server のインスタンスを Windows XP Professional で実行している場合、エンドポイントを正常に作成できない場合があります。たとえば、インターネット インフォメーション サービス (IIS) を実行している場合、CREATE ENDPOINT ステートメントを実行しようとすると、"エンドポイント 'endpointName' の登録中にエラー ('0x80070020') が発生しました。" というエラーが返されて失敗します。

    Windows XP では IIS によってポート 80 がリッスンされているために SQL Server のインスタンスと IIS の間でプロセスの競合が発生します。この問題を回避するには、次の手順を実行します。

    • World Wide Web サービスを停止します。

    • ポート 80 以外のポート番号を使用して、もう一度 CREATE ENDPOINT ステートメントを実行します。

  • 複数のポートを使用できるようにエンドポイントを構成することもできますが、同じ種類のポートを 2 つ指定することはできません。たとえば、1 つのクリア ポートと 1 つの SSL ポートを指定することはできますが、クリア ポートを 2 つ指定したり、SSL ポートを 2 つ指定したりすることはできません。

  • ユーザー定義テーブル値関数はサポートされません。

  • SOAP では、Web メソッドとしての拡張ストアド プロシージャの公開がサポートされません。

  • HTTP 以外のエンドポイントを無効にすることはできません (HTTP エンドポイントのみ、エンドポイントの状態を無効に設定できます)。

  • SOAP の仕様では、SOAP 要求および SOAP 応答での XML 処理命令を明示的に禁止していますが、SQL Server ではその制限事項を強制していません。処理命令 (PI) が SOAP 要求のエンベロープに含まれている場合は、サーバーにより PI が無視されます。PI が XML パラメータ内に含まれている場合、それらの PI は XML データの一部として永続化されます。SOAP 応答に、取得された XML パラメータに含まれているもの以外の PI は含めないようにしてください。たとえば、SOAP クライアント アプリケーションが、PI を含む xml データ型の行のインスタンス値を受け付けない場合や、SQL Server によって返され、型指定された XML に格納されている PI が除去されたりする場合がありえます。PI が重要なシナリオでは、xml データ型をすべて、NVarChar 型か VarBinary 型に変換してから SOAP クライアントに送信するような Web サービスを構築してください。

  • Visual Studio 2005 との相互運用を向上するためには、エンドポイントの Web メソッドで使用されている名前空間が、同じエンドポイントで使用されている xml データ型のスキーマが使用する名前空間と同一にならないようにします。

  • エンドポイントによって返された結果の WSDL に、有効でない XSD スキーマが含まれている場合があります。たとえば、次のシナリオでは 1 つの名前空間が複数回インポートされます。

    • エンドポイントに複数の XML 型パラメータがあり、そのパラメータで異なる複数のスキーマ コレクションを参照している。これらのスキーマ コレクションは、それぞれ同一の名前空間を定義しています。

    • エンドポイントに 1 つの XML 型のパラメータがあり、そのパラメータで SQL Server のネイティブ XML Web サービスで使用するために事前定義された名前空間 URI を参照している。次の表に、このシナリオに該当する可能性がある事前定義の名前空間 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