服务器配置:clr enabled

适用范围:SQL Server

使用 clr enabled 选项指定 SQL Server 是否可以运行用户程序集。 clr enabled 选项提供下列值:

说明
0 不允许在 SQL Server上执行程序集。
1 允许在 SQL Server上执行程序集。

仅适用于 WOW64:重启 WOW64 服务器以应用这些更改。 其他服务器类型不需要重启。

运行 RECONFIGURE 时,clr enabled 选项的运行值将从 1 更改为 0,所有包含用户程序集的应用程序域将立即被卸载。

限制

轻型池不支持执行公共语言运行时 (CLR)

禁用以下两个选项之一:clr enabledlightweight pooling。 依赖于 CLR 并且在纤程模式下无法正常工作的功能包括:hierarchyid 数据类型、FORMAT 函数、复制和基于策略的管理。 有关详细信息,请参阅服务器配置:lightweight pooling

尽管 Azure SQL 数据库 中启用了 clr enabled 配置选项,但 Azure SQL 数据库 中不支持开发 CLR 用户函数。

不再支持代码访问安全性

CLR 在 .NET Framework 中使用代码访问安全性 (CAS)(不可再作为安全边界)。 使用 PERMISSION_SET = SAFE 创建的 CLR 程序集可以访问外部系统资源、调用非托管代码以及获取 sysadmin 特权。 在 SQL Server 2017 (14.x) 及更高版本中,sp_configure 选项 clr strict security 增强了 CLR 程序集的安全性。 默认启用 clr strict security,并将 SAFEEXTERNAL_ACCESS 程序集与标记为 UNSAFE 的程序集同等对待。 可禁用 clr strict security 选项以实现后向兼容性,但不建议这样做。

建议使用证书或非对称密钥对所有程序集进行签名,且该证书或非对称密钥具有已在 UNSAFE ASSEMBLY 数据库中获得 master 权限的相应登录名。 SQL Server 管理员还可以将程序集添加到数据库引擎应信任的程序集列表。 有关详细信息,请参阅 sys.sp_add_trusted_assembly

示例

下面的示例首先显示 clr enabled 选项的当前设置,然后通过将选项值设置为 1 来启用该选项。 若要禁用该选项,请将此值设置为 0。

EXEC sp_configure 'clr enabled';
EXEC sp_configure 'clr enabled' , '1';
RECONFIGURE;