能否向SQL Server 2019添加.NET 5.0和.NET Core 3.1的CLR程序集?
向SQL Server 2019添加.NET 5.0的CLR程序集报错解决方案
操作可行性说明
SQL Server 2019的CLR集成功能仅原生支持*.NET Framework 4.x* 版本的程序集,完全不支持.NET Core 3.1、.NET 5+ 这类Core系列运行时编译的程序集,你要实现的操作本身不可行。
报错原因
你遇到的system.runtime程序集缺失报错,和你已经配置的TRUSTWORTHY ON、clr enabled开关没有关系,核心原因是两种运行时的基础类库实现完全不同:.NET 5编译的程序集依赖的Core系列基础库,不存在于SQL Server 2019内置的.NET Framework类库体系中,哪怕你手动把system.runtime.dll上传注册,后续还会遇到更多依赖类库不兼容、加载失败的问题。
替代解决方法
- 优先方案:将你的
EncryptionDecryptionApp项目代码迁移到.NET Framework 4.8重新编译,只要代码没有用到.NET Core专属API,基本可以平滑迁移,编译时注意选择和你的SQL Server 2019一致的CPU架构(x86/x64),避免架构不兼容导致加载失败,迁移完成后再执行你写的CREATE ASSEMBLY语句即可正常注册程序集。 - 如果必须保留.NET 5的代码实现,可以放弃CLR集成方案,将加密解密逻辑封装为独立的HTTP服务或者控制台程序,SQL侧通过存储过程调用外部服务/程序实现对应功能。
- 如果你可以升级数据库版本,SQL Server 2022开始新增了对.NET 6 LTS版本的CLR支持,升级后可以将你的代码适配到.NET 6再尝试注册。
内容的提问来源于stack exchange,提问作者Saqlain Mushtaq
相关产品推荐
相关产品推荐

