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 集成
默认情况下,Microsoft SQL Server 中禁用公共语言运行库 (CLR) 集成功能,必须启用才能使用通过 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 文档
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 数据库对象。