Запуск сеанса 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"). Если время ожидания, указанное клиентом в запросе, больше максимального значения времени ожидания для сервера, то в ответе клиенту содержится максимальное значение времени ожидания для сервера.