使用 WSDL

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

Web 服务描述语言 (WSDL) 用于为所有在 HTTP 端点上公开的 RPC 函数定义 Web 接口定义,并且还说明了端点的 SQL 批处理功能。客户端可以请求来自 SQL Server 的 WSDL 响应,并使用它生成对服务器的 RPC 和 SQL 批处理请求,方法是通过使用已配置为支持 WSDL 类型的 HTTP 端点。WSDL 响应实际上是基于请求时与端点关联的 RPC 函数而动态生成的 XML 文档。

注意注意

有关 WSDL 的背景信息,请参阅 World Wide Web 联合会 (W3C) 网站(网址为 http://www.w3c.org/)上提供的 WSDL 1.1 规范。

配置为支持提供 WSDL 的 HTTP 端点可以指定以下一种 WSDL 配置,用于响应提交 WSDL 请求的客户端。

  • 默认的 WSDL

  • 自定义的 WSDL

当将 SQL Server 配置为默认的 WSDL 选项时,它将为两种类型的 WSDL 提供支持:默认或扩展的 WSDL 格式和简化的 WSDL 格式。

尽管其中任一 WSDL 文档都说明了端点上支持的方法,但是默认的 WSDL 使用 XML 架构 (XSD) 的附加功能对端点可用的或由其公开的方法、数据类型、参数和返回值提供了更丰富的说明。

简化的 WSDL 格式可能是向下兼容旧客户端时需要使用的,它使用仅需要基元数据类型的非常基本的 XSD 架构。如果默认或简化的 WSDL 都不提供适合于特定客户端的确切的 WSDL 内容,则您可以根据需要更新服务器以提供 WSDL 的自定义版本。

SQL Server 实例在通过提交 WSDL 请求的 Web 服务客户端第一次连接到 HTTP 端点时,将生成并返回 WSDL 响应。

SQL Server 如何支持 WSDL

当定义了端点后,将使用 CREATE ENDPOINTTransact-SQL 语句中的 WSDL 参数来为服务器指定是否为端点生成并返回 WSDL 响应以说明其 Web 可编程功能。如果使用 WSDL=NONE 值建立了端点,则服务器将不会返回 WSDL 响应。

如果指定生成默认的 WSDL(例如,创建端点时指定了 WSDL=DEFAULT),服务器返回的 WSDL 的格式将取决于客户端用来连接到 HTTP 端点的 URL 字符串。客户端可以使用以下一种 URL 格式请求 WSDL:

  • 默认 WSDL

    这是扩展的 WSDL 响应的完整版本,当使用 http://server/endpoint_path?wsdl URL 连接到端点时返回。此格式使用 XSD 派生类型为更复杂的 SQL 类型提供映射支持。有关详细信息,请参阅默认 WSDL

  • 简单 WSDL

    这是默认的 WSDL 的简化版本,可以将所有 SQL Server 系统数据类型映射到本机 XSD 类型。当使用 http://server/endpoint_path?wsdlsimple 作为 URL 连接到端点时返回此格式。有关详细信息,请参阅简单 WSDL

  • 自定义的 WSDL

    当客户端对 SQL Server 实例返回的默认的 WSDL 版本或简化的 WSDL 版本都无法接受时,您可以指定提供自定义的 WSDL。此选项要求设计并实现附加代码。以这种方式,存储过程可用来生成并返回作为客户端结果的自定义的 WSDL 内容,这些客户端在基于 HTTP 的查询中指定自定义的 WSDL 类型。有关详细信息,请参阅实现自定义 WSDL 支持

WSDL 的内容

Web 服务描述语言 (WSDL) 实例是一个含有根 <definitions> 元素的一个 XML 文档,该元素用于指定 WSDL 命名空间 (https://schemas.xmlsoap.org/wsdl) 和定义一组 Web 服务作为网络端点或端口的集合。一个典型 WSDL 文档将具有以下顶级结构:

<wsdl:definitions>
  <wsdl:types>...</wsdl:types>
  <wsdl:message>...<wsdl:message/>
  <wsdl:portType>...</wsdl:portType>
  <wsdl:binding>...</wsdl:binding>
  <wsdl:service>...<wsdl:service>
<wsdl:definitions>

正如此 WSDL 格式的简化视图所示,使用了多个元素来指示 WSDL 文档中的主要部分。下表简要说明了其中每一元素的角色。

元素

说明

wsdl:types

使用 XML 架构 (XSD) 或其他相似的数据类型系统生成的数据类型定义的容器元素。

wsdl:message

传送的消息数据的定义。此消息可以由多个部分组成并且每一部分可以是不同的类型。

wsdl:portType

一个或多个端点支持的操作的抽象集。

wsdl:binding

特定端口类型的具体协议和数据格式规范。

wsdl:service

相关端点的集合。

用于支持 WSDL 的系统存储过程

SQL Server 中包含带有本机 XML Web 服务的以下系统存储过程,用以支持默认和简单的 WSDL 实现并可被调用来响应 WSDL 的请求:

  • sp_http_generate_wsdl_defaultcomplexorsimple

  • sp_http_generate_wsdl_defaultsimpleorcomplex

  • sp_http_generate_wsdl_complex

  • sp_http_generate_wsdl_simple

若要执行这些存储过程,则需要您是 public 角色中的成员。其中每一存储过程都会在内部查询目录以获取有关附加存储过程的信息,这些存储过程作为 Web 方法对端点公开。用户只需要这些 Web 方法存储过程的权限。有关详细信息,请参阅向 Web 公开 SQL 可编程性