Applies to:SQL Server
将编译托管代码,然后在称为公共语言运行时 (CLR) 程序集的单元中部署。 程序集打包为 DLL 或可执行文件(.exe
) 文件。 尽管可执行文件可以自动运行,但 DLL 必须在现有应用程序中承载。 托管 DLL 程序集可以加载到 SQL Server 中并托管。 SQL Server 要求使用 CREATE ASSEMBLY
语句在数据库中注册程序集,然后才能在进程中加载并使用该程序集。 还可以使用 ALTER ASSEMBLY
语句从较新版本更新程序集,也可以使用 DROP ASSEMBLY
语句从 SQL Server 中删除程序集。
程序集信息存储在安装程序集的数据库中 sys.assembly_files
表中。
sys.assembly_files
表包含以下列。
Column | Description |
---|---|
assembly_id |
为程序集定义的标识符。 此编号分配到与同一程序集相关的所有对象。 |
name |
对象的名称。 |
file_id |
标识每个对象的数字,其中第一个对象与给定 assembly_id 给定的值为 1。 如果多个对象与同一个 assembly_id 相关联,则每个后续 file_id 值将递增 1。 |
content |
程序集或文件的十六进制表示形式。 |
在本部分中
Article | Description |
---|---|
创建程序集 | 讨论在 SQL Server 中创建 SAFE 、EXTERNAL_ACCESS 和 UNSAFE CLR 程序集 |
更改程序集 | 介绍如何更新 SQL Server 中的 CLR 程序集 |
删除程序集 | 讨论从 SQL Server 中删除 CLR 程序集 |
不再支持代码访问安全性
CLR 在 .NET Framework 中使用代码访问安全性 (CAS)(不可再作为安全边界)。 使用 PERMISSION_SET = SAFE
创建的 CLR 程序集可以访问外部系统资源、调用非托管代码以及获取 sysadmin 特权。 在 SQL Server 2017 (14.x) 及更高版本中,sp_configure
选项 clr strict security 增强了 CLR 程序集的安全性。 默认启用 clr strict security
,并将 SAFE
和 EXTERNAL_ACCESS
程序集与标记为 UNSAFE
的程序集同等对待。 可禁用 clr strict security
选项以实现后向兼容性,但不建议这样做。
我们建议所有程序集都通过证书或非对称密钥进行签名,且该证书或非对称密钥具有已在 UNSAFE ASSEMBLY
数据库中获得 master
权限的相应登录名。 SQL Server 管理员还可以将程序集添加到数据库引擎应信任的程序集列表。 For more information, see sys.sp_add_trusted_assembly.