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

更新日期: 2006 年 7 月 17 日

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

  • 当 SOAP 未命名会话(SOAP 未命名会话只在一个请求期间内存在)请求事务通知,并且包括 BEGIN TRANSACTION 语句但不包括 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句时,服务器回滚该事务,但是不将回滚事务通知节点包括在 SOAP 响应中。
  • 只有在支持 HTTP API (Http.sys) 的 Windows 操作系统版本上运行的 SQL Server 2005 实例才支持本机 XML Web 服务。如果试图在不满足此操作系统要求且不支持 Http.sys 的 SQL Server 实例上部署本机 XML Web 服务,数据定义语言操作将失败,并且不会发生本机侦听。
  • 如果 SQL Server 实例在 Windows XP 上运行,则可能无法成功创建端点。例如,如果 Internet 信息服务 (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 2005 并没有强制此限制。如果在封装 SOAP 请求时存在处理指令 (PI),服务器将忽略这些指令。如果 PI 出现在 XML 参数的内容中,它们将始终是 XML 数据的一部分。SOAP 响应不应包含处理指令,除非这些处理指令是检索的 XML 参数的一部分。此行为的隐含意义是,SOAP 客户端应用程序可能不接受包含 PI 的 xml 数据类型行实例值,或者应用程序可能会将 SQL Server 返回的类型化 XML 中包含的 PI 条带化。如果这是一个重要的方案,您可以生成 Web 服务,在 Web 服务将任何 xml 数据类型发送回 SOAP 客户端之前将它们转换为 NVarCharVarBinary
  • 为了在 Visual Studio 2005 中获得更好的互操作性,请确保端点 Web 方法中使用的任何命名空间都不同于端点上使用的 xml 数据类型架构所用的命名空间。
  • 端点返回的 WSDL 结果可能包含无效的 XSD 架构,例如,在下列任一方案中,多次输出单个命名空间时可能会出现这种情况:
    • 端点包含多个 XML 类型的参数,这些参数引用不同的架构集合,而每个集合定义相同的命名空间。

    • 端点包含一个 XML 类型的参数,该参数引用一个命名空间 URI,该 URI 在 SQL Server 2005 中被预定义为与本机 XML Web 服务一起使用。此方案可能适用的预定义命名空间 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

请参阅

参考

设置服务器以侦听本机 XML Web 服务请求
SOAP 请求和响应消息结构
用于发送本机 XML Web 服务请求的示例应用程序

其他资源

CREATE ENDPOINT (Transact-SQL)
编写客户端应用程序

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

新增内容:
  • 添加了说明 SOAP 未命名会话行为的条目。