SOAP 会话的支持机制

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

所有 SOAP 会话都是通过包含可选 sqlSession 标头以包含 SOAP 会话的所有相关信息的服务器和客户端之间的请求/响应消息对发生的。sqlSession 区分大小写,是 sqloptions 命名空间的一部分。

在服务器启动 SOAP 会话后,会话将存储在 sys.dm_exec_sessions 动态管理视图中。此视图返回会话 ID 和每个会话的开始时间。您可以通过在 SQL Server Management Studio 中运行以下任一查询或使用 osql 命令行实用工具查看此表:

SELECT * FROM [sys].[dm_exec_sessions]

SOAP 会话根据会话超时值确定是否过期。使用 CREATE ENDPOINTALTER ENDPOINT DDL 语句,设置服务器的默认或最大会话超时值。但是,客户端可以请求少于默认时间间隔的超时值。如果客户端请求的超时值大于服务器默认超时值,端点 DDL 语句指定的超时值将覆盖选定的客户端超时值。例如,假设使用下面的 CREATE ENDPOINT 建立会话支持的端点:

CREATE ENDPOINT
   ...
SESSIONS=ENABLED
   ...
SESSION_TIMEOUT = 60

之后,如果 SOAP 客户端请求的会话超时值(如 90)大于服务器最大会话超时值,则服务器最大会话超时值 60 将覆盖该值并用作实际会话超时间隔。如果端点 DDL 语句中未设置 SESSION_TIMEOUT,则服务器将不会超时会话(无限)。

默认情况下,HTTP 端点不会启用会话。若要在端点上启用会话,您必须在端点 DDL 中指定 SESSIONS=ENABLED。

会话仅在 SQL Server 实例联机时才会持续。停止然后重新启动服务器时,将重置所有会话。此外,修改端点可以影响使用该端点的打开的或新的会话。有关详细信息,请参阅在使用 SOAP 会话时更改端点

注意注意

要联接现有 HTTP SOAP 会话的所有请求必须经过身份验证。有关详细信息,请参阅端点身份验证类型

可以启动或结束会话来修改它们的状态,但它们通常保留为“睡眠”状态(如会话已启动且在服务器上处于打开状态以供客户端使用时)或“休眠”状态(如会话已结束且当前在服务器上无法用于客户端时)。

注意注意

Web 服务定义语言 (WSDL) 请求无法参与 SOAP 会话。有关 WSDL 的详细信息,请参阅使用 WSDL