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

使用PowerShell配置Always Encrypted CNG时遇类型加载异常求助

解决Always Encrypted PowerShell脚本的Azure KeyVault依赖错误

问题原因

即使未使用Azure KeyVault功能,SqlServer PowerShell模块的Always Encrypted组件仍依赖Azure相关程序集。当系统中安装的Microsoft.Azure.KeyVault版本与模块预期版本不兼容(如缺失get_SerializationSettings方法)时,就会触发类型初始化异常。

解决步骤

1. 更新SqlServer PowerShell模块到最新稳定版

旧版本的SqlServer模块可能存在依赖兼容问题,优先更新模块:

# 查看已安装的SqlServer模块版本
Get-Module -ListAvailable SqlServer

# 更新到最新版本
Update-Module -Name SqlServer -Force

2. 修复Azure KeyVault组件依赖

卸载冲突的旧版Microsoft.Azure.KeyVault模块,安装与SqlServer模块兼容的版本:

# 卸载所有旧版本
Uninstall-Module -Name Microsoft.Azure.KeyVault -AllVersions -Force

# 安装兼容版本(推荐2.4.0,适配多数SqlServer模块版本)
Install-Module -Name Microsoft.Azure.KeyVault -RequiredVersion 2.4.0 -Force

若仍有问题,可尝试安装最新版Az.KeyVault模块(Azure官方新模块,兼容性更好):

Install-Module -Name Az.KeyVault -Force

3. 检查并升级.NET Framework版本

Always Encrypted组件要求.NET Framework 4.7.2及以上版本,若系统版本过低,需安装官方最新兼容版本。

4. 替代方案:使用SSMS生成加密值

如果PowerShell模块问题无法快速解决,可通过SQL Server Management Studio(SSMS)图形界面生成列加密密钥的加密值:

  • 连接到目标数据库,展开“安全性”>“列主密钥”
  • 右键目标列主密钥,选择“生成列加密密钥”
  • 生成后复制加密值,直接在脚本中使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:43:57