结束 SOAP 会话

后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

若要结束会话,请求必须指定 sqlSession 标头并设置 sessionIdterminate 属性。sessionId 必须标识一个在服务器上处于可访问状态的已知会话,并且 terminate 属性必须设置为值 true

如果不存在具有指定 ID 的会话,则将返回一个具有 sqlSession 标头中 terminate 属性的 SOAP 错误。

如果请求是在启动会话之外的安全上下文或端点处执行的,则将返回 SOAP 错误,会话保持不变。

显式结束后,该会话不接受任何新请求。会话中的最后一个批完成后,会话将关闭。此批不必是实际请求会话终止时所在的批。

示例

下面的示例介绍了如何结束 SOAP 会话。若要结束会话,SOAP 客户端将发出下面所示的请求,设置已知的有效 sessionId 属性值,并将 terminate 属性的值指定为 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>

结束会话的请求可以为空,也可以包含邮件正文。如果存在正文,无论执行方法时出现什么错误,都将处理并确认终止标头。

服务器将返回一个确认响应(如下所示),以指示会话已结束。

<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>

若要确保终止操作完成,客户端通常需要扫描服务器的确认响应。如果客户端在一段合适的时间内未收到确认响应,客户端应重试终止请求。