创建 CLR 函数

可以在通过 Microsoft .NET Framework 公共语言运行时(CLR)创建的程序集进行编程的 SQL Server 实例中创建数据库对象。 可以利用公共语言运行时提供的丰富编程模型的数据库对象包括聚合函数、函数、存储过程、触发器和类型。

在 SQL Server 中创建 CLR 函数涉及以下步骤:

  • 将该函数定义为 .NET Framework 支持的语言中的类的静态方法。 有关如何在公共语言运行时中对函数进行编程的详细信息,请参阅 CLR User-Defined Functions。 然后,使用适当的语言编译器编译类以在 .NET Framework 中生成程序集。

  • 使用 CREATE ASSEMBLY 语句在 SQL Server 中注册程序集。 有关 SQL Server 中的程序集的详细信息,请参阅程序集(数据库引擎)。

  • 使用 CREATE FUNCTION 语句创建引用已注册程序集的函数。

注释

在 MicrosoftVisual Studio 中部署 SQL Server 项目在为项目指定的数据库中注册程序集。 部署项目还会为使用 SqlFunction 属性注释的所有方法在数据库中创建 CLR 函数。 有关详细信息,请参阅 部署 CLR 数据库对象

注释

默认情况下,SQL Server 执行 CLR 代码的功能处于关闭状态。 可以创建、更改和删除引用托管代码模块的数据库对象,但这些引用不会在 SQL Server 中执行,除非使用 sp_configure (Transact-SQL) 启用 clr 启用选项

访问外部资源

CLR 函数可用于访问外部资源,例如文件、网络资源、Web 服务、其他数据库(包括 SQL Server 的远程实例)。 这可以通过在 .NET Framework 中使用各种类来实现,例如System.IOSystem.WebServicesSystem.Sql,等等。 包含此类函数的程序集至少应为此配置EXTERNAL_ACCESS权限集。 有关详细信息,请参阅 CREATE ASSEMBLY (Transact-SQL)。 SQL 客户端托管提供程序可用于访问 SQL Server 的远程实例。 但是,CLR 函数不支持与发起服务器的环回连接。

在 SQL Server 中创建、修改或删除程序集

创建 CLR 函数

访问本地代码

CLR 函数可用于通过托管代码使用 PInvoke 访问本机(非托管)代码(例如用 C 编写的代码或C++编写的代码)(有关详细信息,请参阅 从托管代码调用本机函数 )。 这样,便可以将旧代码重新用作 CLR UDF,或在本机代码中编写性能关键 UDF。 这需要使用 UNSAFE 程序集。 有关使用 UNSAFE 程序集的警告,请参阅 CLR 集成代码访问安全性

另请参阅

创建用户定义的函数(数据库引擎)
创建用户定义的聚合
执行用户定义的函数
查看用户定义的函数
公共语言运行时 (CLR) 集成编程概念