You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加受信任程序集后触发Msg 6528:无法找到XYZCLRDatabase程序集

问题根源与解决方案

你遇到的问题核心在于:你只完成了服务器级别的"可信程序集"注册,但并没有把CLR程序集本身部署到目标数据库XYZ中。

具体解释

  • sys.sp_add_trusted_assembly这个操作只是把程序集的SHA2_512哈希添加到SQL Server的服务器级可信列表(sys.trusted_assemblies),作用是在SQL Server 2017及以上的clr strict security默认模式下,允许加载这个程序集(绕过安全检查)。但它不会把程序集的二进制内容部署到任何数据库。
  • 而数据库的Programmability > Assemblies文件夹展示的是当前数据库中已部署的CLR程序集,你没执行部署操作,所以自然看不到。创建存储过程时指定EXTERNAL NAME,数据库找不到对应的程序集,就会抛出Msg 6528错误。

正确的操作流程(补全你缺失的步骤)

  1. 确认可信程序集已注册:你之前的这步操作是对的,已经完成了服务器级的信任配置,不用重复执行。
  2. 将程序集部署到XYZ数据库:执行以下SQL,把你的CLR程序集二进制内容加载到XYZ数据库中:
USE XYZ
GO
DECLARE @asmBin varbinary(max) = <binary>; -- 替换为你之前使用的二进制变量值
CREATE ASSEMBLY XYZCLRDatabase
FROM @asmBin
WITH PERMISSION_SET = [SAFE|EXTERNAL_ACCESS|UNSAFE]; -- 根据你的程序集权限需求选择
GO
  • 注意:PERMISSION_SET要和你的CLR程序集实际需要的权限匹配:
    • SAFE:默认值,程序集只能访问数据库内部资源,不能访问外部系统
    • EXTERNAL_ACCESS:允许程序集访问外部系统资源(比如文件、网络)
    • UNSAFE:允许程序集执行任意代码,权限最高
  1. 再次创建存储过程:现在程序集已经部署到XYZ数据库,再执行你原来的CREATE PROCEDURE语句,就可以成功创建了。

验证

执行完部署步骤后,你再查看XYZ数据库的Programmability > Assemblies文件夹,就能看到XYZCLRDatabase程序集了。

内容的提问来源于stack exchange,提问作者Kalpesh Rajai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:48:38