Поделиться через


Запуск сеанса SOAP

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

Для запуска сеанса клиентский запрос должен включать заголовок sqlSession, а также указать атрибут запуска при помощи значения true. Если сеанс устанавливается успешно, ответ сервера будет содержать заголовок сеанса, указывающий сформированное сервером значение для свойства sessionID.

С сеансом связываются учетные данные безопасности инициатора сеанса, и все последующие запросы сеанса выполняются с теми же учетными данными.

Если конечная точка HTTP, обслуживающая сеанс SOAP, указала предложение DATABASE, то эта настройка оказывает эффект только для запроса, инициирующего сеанс. Последующие запросы выполняются в текущей базе данных сеанса.

ПримечаниеПримечание

Сеансы SOAP не зависят от соединения, и их длительность может превышать срок жизни соединений SQL Server. Сеансы SOAP не учитываются счетчиком максимального числа соединений сервера.

Пример

В следующем примере демонстрируется, как запустить сеанс SOAP. При запуске сеанса SOAP используются следующие сообщения:

  • Запрос SOAP, отправленный клиентом веб-служб для запроса сеанса

  • Ответ SOAP, возвращенный сервером для подтверждения запроса

Далее приведен пример запроса SOAP, который может быть отправлен клиентом.

<SOAP-ENV:Header  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">    <!-- create a new session, with explicit timeout --><sqloptions:sqlSession initiate="true" timeout="12"/></SOAP-ENV:Header>

Обратите внимание, что имя параметра чувствительно к регистру; таким образом, точная строка должна включать заглавную букву S, как sqlSession в предыдущем коде.

Для запуска сеанса сервер должен возвратить следующий запрос.

<SOAP-ENV:Header  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">    <!-- response to creating a new session, or enlisting in an existing session --><sqloptions:sqlSession sessionId="AAAAADreaLE=" timeout="12"/></SOAP-ENV:Header>

В этом примере, если запрошенное значение времени ожидания меньше или равно максимальному значению времени ожидания для сеанса, установленному сервером на конечной точке HTTP, то сервер учитывает время ожидания, запрошенное клиентом, и возвращает то же значение ("12"). Если время ожидания, указанное клиентом в запросе, больше максимального значения времени ожидания для сервера, то в ответе клиенту содержится максимальное значение времени ожидания для сервера.