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

VS2019发布SQLCLR类库时提示System.Drawing不受信任如何解决

SQLCLR部署System.Drawing不受信任报错解决方案

完整报错信息:
(47,1): SQL72014: .Net SqlClient Data Provider: 消息 10327,级别 14,状态 1,第 1 行 程序集 'SqlClassLibrary' 的 CREATE ASSEMBLY 操作失败,因为程序集 'System.Drawing' 不受信任。满足以下任一条件时程序集将被视为受信任:程序集使用证书或非对称密钥签名,且其对应的登录名拥有UNSAFE ASSEMBLY权限;或已使用sp_add_trusted_assembly将该程序集添加到信任列表。

排查解决步骤

  • 第一步:校验System.Drawing哈希匹配性
    sp_add_trusted_assembly 依赖SHA512哈希校验程序集身份,版本、架构(32/64位)不一致都会导致哈希不匹配,执行以下操作校验:
    1. 查询服务器现有可信System.Drawing的哈希:
      SELECT * FROM sys.trusted_assemblies WHERE description LIKE '%System.Drawing%'
      
    2. 用PowerShell查询你项目引用的System.Drawing.dll哈希,路径替换为你本地dll的实际路径:
      Get-FileHash -Path "C:\你的项目路径\bin\Release\System.Drawing.dll" -Algorithm SHA512
      
    3. 二者不一致则先删除旧的可信条目,重新添加正确版本:
      EXEC sp_drop_trusted_assembly '查询到的旧哈希值'
      EXEC sp_add_trusted_assembly 0x新哈希值, N'System.Drawing, 版本=xxx, 文化=neutral, 公钥Token=b03f5f7f11d50a3a'
      
  • 第二步:调整VS2019发布配置
    VS默认发布逻辑会忽略服务器端已配置的可信程序集规则,需手动修改发布设置:
    1. 右键数据库项目选择【发布】,点击弹出窗口的【高级】按钮
    2. 在常规标签页找到忽略与受信任程序集相关的检查选项,勾选后保存
    3. 回到项目属性→数据库设置→权限标签,确认程序集权限级别设置为UNSAFE
  • 第三步:检查CLR严格安全性配置
    SQL Server 2017及以上版本默认启用CLR严格安全性,除了依赖的System.Drawing,你自己的SqlClassLibrary程序集也需要满足可信要求:
    1. 可直接将你自己的程序集也添加到可信列表,操作逻辑同System.Drawing
    2. 测试场景可临时关闭CLR严格安全性(生产环境不推荐):
      sp_configure 'show advanced options', 1;
      RECONFIGURE;
      sp_configure 'clr strict security', 0;
      RECONFIGURE;
      
  • 第四步:手动执行部署脚本
    上述配置都生效后仍报错的话,点击VS发布窗口的【生成脚本】按钮,手动修改生成的SQL脚本,删除尝试重新注册System.Drawing的逻辑,直接执行你自己程序集的创建语句即可。

内容的提问来源于stack exchange,提问作者Simple Simon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:15:05