向 Web 公开 SQL 可编程性

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

创建或更新 HTTP SOAP 端点时,可以有选择地将存储过程或用户定义函数公开为“Web 方法”。Web 方法是现有的存储过程或用户定义函数,这些存储过程或用户定义函数是通过使用相应的 Transact-SQL 语句(例如,针对存储过程的 CREATE PROCEDURE 语句或针对用户定义函数的 CREATE FUNCTION 语句)创建且是为通过端点进行 Web 访问定义的。

在服务器上创建了存储过程或用户定义函数后,随后可以通过使用端点 DDL 语句(CREATE ENDPOINT 或 ALTER ENDPOINT)将其公开为 Web 方法。

注意注意

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

Web 方法的参数命名准则和限制

根据 SQL Server 的命名规则,用户定义函数和存储过程中使用的参数必须具有正确的格式化名称。有关详细信息,请参阅使用标识符作为对象名称指定参数名称

有时,允许对用户定义函数和存储过程名称应用某些类型的不推荐使用的命名约定,但是本机 XML Web 服务访问不接受使用这些命名约定。SQL Server 参数命名规则允许使用但已不推荐使用,当用户定义函数或存储过程公开为 Web 方法时不允许使用的参数名称包括以下几种:

@

@@

@@this_is_not_a_global

为了允许在本机 XML Web 服务访问中公开,必须为请求的过程或函数修改这些不推荐使用的参数名称,以允许使用具有标准名称形式 @param 的参数。

公开系统存储过程

在 SQL Server 中,可以使用系统存储过程执行一些信息性和管理活动。有时,您可能想要将这些过程公开为可以通过 HTTP 端点访问的 Web 服务方法。

所有系统存储过程都存储在系统 Resource 数据库中,但并不是所有系统存储过程都有允许服务器生成的 Web 服务描述语言 (WSDL) 响应公开正确架构的元数据信息。这会导致出现这样的情况:当在某个 HTTP 端点上公开一些系统存储过程时,这些系统存储过程并不按预期的方式操作。

如果想要将系统存储过程作为您自己的自定义 SQL Server 管理解决方案的一部分公开,您可以使用下列几种备选方法。通过这些方法可以解决无法访问某个特定系统存储过程的情况。

  • 首先,对于以非递归方式简单使用系统存储过程的情况,请尝试创建您自己的用户定义存储过程,以包装您想要在 HTTP 端点上公开的系统存储过程。

  • 其次,如果由于对多个存储过程使用嵌套调用,表明前述方法过于复杂或难于处理而无法进行管理,请考虑使用 sqlbatch 方法来解决问题。有关如何使用 sqlbatch 的示例,请参阅 SOAP 请求消息结构