Compartilhar via


Encerrando uma sessão SOAP

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

Para terminar uma sessão, uma solicitação deve especificar o cabeçalho sqlSession com os atributos sessionId e terminate definidos. O atributo sessionId deve identificar uma sessão conhecida que está em um estado acessível no servidor e o atributo terminate deve ser definido como um valor de true.

Se não houver nenhuma sessão existente com a ID especificada, uma falha SOAP será retornada com o atributo terminate no cabeçalho sqlSession.

Se a solicitação for executada em um contexto de segurança ou ponto de extremidade diferente daquele que iniciou a sessão, uma falha SOAP será retornada e a sessão permanecerá inalterada.

Quando explicitamente terminada, nenhuma nova solicitação será aceita sob a sessão. A sessão será fechada quando o último lote dentro dela for concluído. Esse não é necessariamente o mesmo lote no qual o término da sessão foi realmente solicitado.

Exemplos

O exemplo a seguir mostra como terminar uma sessão SOAP. Para terminar uma sessão, o cliente SOAP envia uma solicitação, como a mostrada a seguir, com o valor válido e conhecido do atributo sessionId definido e o atributo terminate especificado com um valor de true:

<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, and terminate it --><sqloptions:sqlSession terminate="true" sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

Solicitações para terminar uma sessão podem ser vazias ou ter um corpo de mensagem. Se um corpo estiver presente, o cabeçalho terminate será processado e confirmado, independentemente dos erros ocorridos na execução do método.

O servidor retornará, então, uma confirmação, como a seguinte, para indicar que a sessão terminou.

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

Para verificarem se o término foi concluído, os clientes normalmente têm que procurar a resposta de confirmação no servidor. Se a confirmação não for recebida no cliente dentro de um período razoável, o cliente deverá repetir a solicitação de término.