扩展存储过程

重要说明重要提示

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

扩展存储过程使您能够在编程语言(例如,C)中创建自己的外部例程。扩展存储过程的显示方式和执行方式与常规存储过程一样。可以将参数传递给扩展存储过程,而且扩展存储过程也可以返回结果和状态。

扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL。扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运行。

注意注意

不应将扩展存储过程用于实例化 Microsoft .NET Framework 公共语言运行时和执行托管代码。在将来的 SQL Server 版本中,不支持这种方案。CLR 集成提供了更为可靠和安全的替代方法来编写扩展存储过程。

在扩展存储过程编写完成后,固定服务器角色 sysadmin 的成员可以使用 SQL Server 实例来注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到 master 数据库中。

注意注意

扩展存储过程可能会产生内存泄漏或其他降低服务器的性能及可靠性的问题。您应该考虑将扩展存储过程存储在不包含被引用数据的 SQL Server 实例中。也可以考虑使用分布式查询来访问数据库。有关详细信息,请参阅分布式查询

安全性

在将扩展存储过程添加到服务器和授予其他用户执行权限之前,系统管理员应该彻底检查每个扩展存储过程以确保它不含有有害的或恶意的代码。

其他安全性原则有:

  • 验证所有用户的输入。

  • 验证之前,不要串联用户输入。

  • 绝对不要执行根据尚未验证的用户输入构造的命令。有关详细信息,请参阅 SQL 注入