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

SQL Server 2019升级后EF用Always Encrypted遇安全飞地报错的解决方法

解决方案

1. 清除执行计划缓存

错误提示明确指向执行计划缓存问题,迁移后SQL Server可能留存了错误尝试调用飞地功能的旧计划。执行以下操作:

  • 连接到SQL Server实例,执行命令清除目标数据库的缓存:
    -- 先获取目标数据库ID
    SELECT DB_ID('Derma2Go_test');
    -- 替换<数据库ID>为上述查询结果,清除单个数据库的执行计划缓存
    DBCC FLUSHPROCINDB (<数据库ID>);
    
    若需要清除整个实例的缓存(需注意影响所有数据库),执行:
    DBCC FREEPROCCACHE;
    

2. 修改连接字符串,显式禁用飞地

在现有连接字符串中添加Enclave Attestation Url=(空值),明确告知客户端驱动不使用安全飞地功能。修改后的连接字符串:

Data Source=localhost\SQLEXPRESS;Initial Catalog=Derma2Go_test;Integrated Security=True;MultipleActiveResultSets=True;Column Encryption Setting=enabled;Enclave Attestation Url=

3. 更新EF6及SqlClient依赖

你使用的EF6 6.0.0.0版本较旧,可能存在与SQL Server 2019 Always Encrypted的兼容性问题:

  • 将Entity Framework 6更新至最新稳定版本(如6.4.4)
  • 更新System.Data.SqlClient NuGet包到4.8.5及以上版本

4. 确认密钥未启用飞地支持

检查加密列关联的密钥配置,确保未开启飞地计算:

  • 在SSMS中展开目标数据库 → 安全性 → 始终加密密钥
  • 查看列主密钥属性,确认“允许飞地计算”未勾选
  • 检查列加密密钥,确认未关联启用飞地的列主密钥

内容的提问来源于stack exchange,提问作者Eduardo Correal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:35:27