次の方法で共有


SOAP セッションの使用

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

既存のセッションのコンテキスト内で SOAP 要求を実行するには、サーバーへの SOAP セッション要求の一部として次の項目を指定する必要があります。

  • 以前にサーバーからクライアントに提供されたものと同じセッション ID。

  • 以前に SOAP セッションが開始されたエンドポイントに対応する HTTP エンドポイント ID。

  • 同じユーザー コンテキスト。これは、エンドポイントの SOAP プロパティでサポートされる LOGIN_TYPE に応じて、Windows ユーザーまたは SQL Server ユーザーになります。

指定したセッション ID が存在しないか、形式が正しくない場合は、terminate 属性を含むヘッダーの sqlSession 要素により SOAP エラー メッセージが返されます。それ以外の場合は、サーバーはクライアントが要求で送信したものと同じ sqlSession ヘッダーをエコー バックすることにより応答します。

セッションを開始したセキュリティ コンテキストやエンドポイントとは異なるもので要求が実行された場合、SOAP エラーが返されます。エラーの場合の応答では、SOAP 層終了の SOAP エラー コードが示され、sqlSession ヘッダーの terminate 属性には true 値が設定されます。

また、悪意のあるユーザーがセッションの存在を判断できないように、terminate 属性が設定され、サーバーにとって参加が不明であると特定されたセッション内のすべての要求に対する唯一の応答メッセージとして、サーバーから SOAP エラーが返されます。

次に、SOAP セッションに参加する例を示します。既存の SOAP セッションに参加することを要求するときに、クライアントから送信される SOAP メッセージの形式を示します。実際の sessionId 値は、セッション固有の識別子になります。

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- enlist in an existing session --><sqloptions:sqlSession sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

サーバーでは、セッションにアクセスできることを示す場合はクライアントにメッセージをエコー バックします。また、要求で識別されたセッションにアクセスできないことを示す場合はクライアントに SOAP エラーを返します。