本机 XML Web 服务的指导原则和限制

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

下列指导原则和限制适用于本机 XML Web 服务请求:

  • 当 SOAP 未命名会话(SOAP 未命名会话只在一个请求期间内存在)请求事务通知,并且包括 BEGIN TRANSACTION 语句但不包括 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句时,服务器回滚该事务,但是不将回滚事务通知节点包括在 SOAP 响应中。

  • 只有那些运行于支持 HTTP API (Http.sys) 的 Windows 操作系统版本上的 SQL Server 实例才支持本机 XML Web 服务。如果试图在不满足此操作系统要求且不支持 Http.sys 的 SQL Server 实例上部署本机 XML Web 服务,数据定义语言操作将失败,并且不会发生本机侦听。

  • 如果 SQL Server 实例是在 Windows XP Professional 上运行,则可能无法成功创建端点。例如,如果 Internet Information Services (IIS) 正在运行,则尝试运行 CREATE ENDPOINT 语句将失败,并返回以下错误:“试图注册端点 'endpointName' 时发生错误 ('0x80070020')。”

    此错误指示由于 IIS 侦听 Windows XP 下的端口 80,SQL Server 实例和 IIS 之间发生了进程冲突。若要解决此问题,请执行以下操作:

    • 停止万维网服务

    • 通过使用除端口 80 以外的其他端口重新运行 CREATE ENDPOINT。

  • 可以将端点配置为使用多个端口,但不能指定两个相同类型的端口。例如,可以指定一个清除端口和一个 SSL 端口,但不能指定两个清除端口或两个 SSL 端口。

  • 不支持用户定义的表值函数。

  • SOAP 不支持将扩展存储过程公开为 Web 方法。

  • 不能禁用非 HTTP 端点(只能将 HTTP 端点的状态设置为禁用)。

  • 尽管 SOAP 规范明确禁止在 SOAP 请求和响应中使用 XML 处理指令,但 SQL Server 并没有强制此限制。如果在封装 SOAP 请求时存在处理指令 (PI),服务器将忽略这些指令。如果 PI 出现在 XML 参数的内容中,它们将始终是 XML 数据的一部分。SOAP 响应不应包含处理指令,除非这些处理指令是检索的 XML 参数的一部分。此行为的隐含意义是,SOAP 客户端应用程序可能不接受包含 PI 的 xml 数据类型行实例值,或者应用程序可能会将 SQL Server 返回的类型化 XML 中包含的 PI 条带化。如果这是一个重要的方案,您可以生成 Web 服务,在 Web 服务将任何 xml 数据类型发送回 SOAP 客户端之前将它们转换为 NVarChar 或 VarBinary。

  • 为了在 Visual Studio 2005 中获得更好的互操作性,请确保端点 Web 方法中使用的任何命名空间都不同于端点上使用的 xml 数据类型架构所用的命名空间。

  • 端点返回的 WSDL 结果可能包含无效的 XSD 架构,例如,在下列任一方案中,多次输出单个命名空间时可能会出现这种情况:

    • 端点包含多个 XML 类型的参数,这些参数引用不同的架构集合,而每个集合定义相同的命名空间。

    • 该端点包含的 XML 类型的参数引用了为在 SQL Server 中用于本机 XML Web 服务而预定义的命名空间 URI。此方案可能适用的预定义命名空间 URI 包含下表中列出的 URI。

      Prefix

      命名空间 URI

      sql

      https://schemas.microsoft.com/sqlserver/2004/SOAP

      sqloptions

      https://schemas.microsoft.com/sqlserver/2004/SOAP/Options

      sqlsoaptypes

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types

      sqlmessage

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlMessage

      sqlparameter

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlParameter

      sqlresultstream

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlResultStream

      sqlrowcount

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlRowCount

      sqltransaction

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlTransaction

      sqltypes

      https://schemas.microsoft.com/sqlserver/2004/sqltypes

      xml

      http://www.w3.org/XML/1998/namespace

      xsd

      http://www.w3.org/2001/XMLSchema

      xsi

      http://www.w3.org/2001/XMLSchema-instance