SQL Server CLR 集成简介

公共语言运行时(CLR)是 .NET Framework 的核心,为所有 .NET Framework 代码提供执行环境。 在 CLR 中运行的代码称为托管代码。 CLR 提供执行程序所需的各种函数和服务,包括实时 (JIT) 编译、分配和管理内存、强制类型安全、异常处理、线程管理和安全性。

使用托管在 MICROSOFT SQL Server(称为 CLR 集成)中的 CLR,可以在托管代码中创作存储过程、触发器、用户定义的函数、用户定义的类型和用户定义的聚合。 由于托管代码在执行之前编译为本机代码,因此在某些情况下可以实现显著的性能提升。

在 .NET Framework 上运行的托管代码使用代码访问安全性(CAS)、代码链接和应用程序域来防止程序集执行某些作。 SQL Server 使用 CAS 来帮助保护托管代码并防止作系统或数据库服务器遭到入侵。

注释

代码访问安全性(CAS)已在 .NET Framework 和 .NET 的所有版本中弃用。 使用与 CAS 相关的 API 时,最新版本的 .NET 不遵循 CAS 注释并生成错误。 开发人员应寻求完成安全任务的替代方法。

本部分只提供足够的信息,以便开始使用 SQL Server CLR 集成进行编程,但并不全面。 有关详细信息,请参阅 公共语言运行时(CLR)集成概述

启用 CLR 集成

公共语言运行时 (CLR) 集成功能默认在 Microsoft SQL Server 中处于关闭状态,并且必须启用才能使用使用 CLR 集成实现的对象。 要使用 Transact-SQL 启用 CLR 集成,请使用如下所示的 clr enabled 存储过程的 sp_configure 选项:

sp_configure 'clr enabled', 1  
GO  
RECONFIGURE  
GO  

可以通过将 clr enabled 选项设置为 0 来禁用 CLR 集成。 禁用 CLR 集成时,SQL Server 停止执行所有 CLR 例程并卸载所有应用程序域。

有关详细信息,请参阅 “启用 CLR 集成”。

部署 CLR 程序集

在测试服务器上测试并验证 CLR 方法后,可以使用部署脚本将其分发到生产服务器。 部署脚本可以手动生成,也可以使用 SQL Server Management Studio 生成。 有关详细信息,请参阅所使用的 SQL Server 版本的 SQL Server 文档版本。

SQL Server 文档

  1. 部署 CLR 数据库对象

CLR 集成安全性

Microsoft SQL Server 与 Microsoft .NET Framework 公共语言运行时(CLR)集成的安全模型管理并保护在 SQL Server 中运行的不同类型的 CLR 和非 CLR 对象之间的访问。 这些对象可由 Transact-SQL 语句或服务器中运行的另一个 CLR 对象调用。

有关详细信息,请参阅 CLR 集成安全性

调试 CLR 程序集

Microsoft SQL Server 支持在数据库中调试 Transact-SQL 和公共语言运行时 (CLR) 对象。 调试功能支持跨语言:用户可以在 Transact-SQL 和 CLR 对象之间无缝转换,来回都很方便。

有关详细信息,请参阅 调试 CLR 数据库对象

另请参阅