Share via


SOAP セッション サポートのしくみ

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

すべての SOAP セッションは、SOAP セッションに関連するすべての情報を含めるためのオプション sqlSession ヘッダーが含まれるサーバーとクライアント間の要求メッセージと応答メッセージの組によって発生します。sqlSession では大文字と小文字が区別され、sqloptions 名前空間の一部になります。

サーバーが SOAP セッションを開始した後、そのセッションは sys.dm_exec_sessions 動的管理ビューに格納されます。このビューにより、セッション ID と各セッションの開始時刻が返されます。このテーブルは、次のクエリを SQL Server Management Studio で実行するか、または osql コマンド ライン ユーティリティを使用して実行すると表示できます。

SELECT * FROM [sys].[dm_exec_sessions]

SOAP セッションの有効期限はセッションのタイムアウト値に基づいています。サーバーの既定または最大のセッション タイムアウトは、DDL ステートメントの CREATE ENDPOINT または ALTER ENDPOINT を使用して設定します。ただし、クライアントにより、既定の間隔よりも短いタイムアウト値が要求されることがあります。クライアントにより、サーバーの既定のタイムアウトよりも長いタイムアウト値が要求された場合、エンドポイント DDL ステートメントで指定したタイムアウトが、クライアントにより要求されたタイムアウトに優先されます。たとえば、次の CREATE ENDPOINT を使用して、セッションをサポートするエンドポイントが確立されているとします。

CREATE ENDPOINT
   ...
SESSIONS=ENABLED
   ...
SESSION_TIMEOUT = 60

SOAP クライアントによりサーバーの最大のセッション アウト値 (60) よりも長いセッション タイムアウト (たとえば、90) が要求された場合、サーバーの最大値が優先され、実際のセッション タイムアウト間隔として適用されます。エンドポイント DDL ステートメントで SESSION_TIMEOUT が設定されていない場合は、サーバーによりセッションがタイムアウトされることはありません (タイムアウト値は無限になります)。

既定では、HTTP エンドポイントに有効なセッションがありません。エンドポイントのセッションを有効にするには、エンドポイント DDL で SESSIONS=ENABLED を指定する必要があります。

セッションは、SQL Server のインスタンスがオンラインの間のみ存続します。サーバーを停止し、再起動すると、すべてのセッションがリセットされます。また、エンドポイントを変更すると、そのエンドポイントを使用する開いているセッションまたは新しいセッションに影響することがあります。詳細については、「SOAP セッション使用時のエンドポイントの変更」を参照してください。

注意

既存の HTTP SOAP セッションへのすべての参加要求は、認証される必要があります。詳細については、「エンドポイント認証の種類」を参照してください。

セッションを開始または終了してセッションの状態を変更することができます。ただし、通常、セッションの状態は、"スリープ" 状態 (たとえば、セッションが開始していて、クライアントで使用するためにサーバーで開かれているとき)、または "休止" 状態 (たとえば、セッションが終了していて、クライアントで使用するために現在サーバーで使用できないとき) のいずれかの状態のままになります。

注意

Web サービス記述言語 (WSDL) の要求は SOAP セッションに参加できません。WSDL の詳細については、「WSDL の使用」を参照してください。