启动 SOAP 会话

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

若要启动会话,客户端请求必须包含 sqlSession 标头,并指定启动属性的值为 True。如果成功地建立了会话,则服务器的响应将包含会话标头,该标头指定服务器为 sessionID 属性生成的值。

会话发起方的安全凭据与会话相关联,并且必须以相同凭据执行会话中的所有后续请求。

如果 SOAP 会话所使用的 HTTP 端点已指定了 DATABASE 子句,则此设置仅对启动会话的请求有效。后续请求在会话的当前数据库下执行。

注意注意

SOAP 会话与连接无关,可以在 SQL Server 连接之外进行。SOAP 会话不对服务器的最大连接数进行计数。

示例

下面的示例说明了如何启动 SOAP 会话。启动 SOAP 会话后,将使用下列消息:

  • Web 服务客户端发送的请求会话的 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")。如果请求中客户端指定的超时间隔大于服务器的最大超时值,则将在对客户端的响应中指定服务器最大超时值。