Ending a SOAP Session
To end a session, a request must specify the sqlSession header with both the sessionId and terminate attributes set. The sessionId must identify a known session that the server that is in an accessible state at the server and the terminate attribute must be set to a value of true.
If there is no session existing with the specified ID, a SOAP fault is returned with the terminate attribute in the sqlSession header.
If the request is executed under a different security context or endpoint than that which initiated the session, a SOAP fault is returned and the session remains unaltered.
When explicitly ended, no new requests are accepted under the session. The session is closed when the last batch within the session is completed. This is not necessarily the same batch in which session termination was actually requested.
Examples
The following example shows ending a SOAP session. To end a session, a SOAP client sends a request such as the following with the known and valid sessionId attribute value set and the terminate attribute specified with a value of 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>
Requests to end a session can be empty or have a message body. If a body is present, the terminate header is processed and acknowledged, regardless of the errors occurring on the execution of the method.
The server will then return a confirmation, such as the following, to indicate the session has ended.
<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>
To make sure termination is completed, clients will typically have to scan for the confirmation response from the server. If the confirmation is not received at the client within a reasonable period of time, the client should retry the termination request.
See Also
Reference
Using a SOAP Session
Sample Applications for Sending Native XML Web Services Requests
Adding SOAP Headers to Client Applications