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

SQL列加密密钥轮换失败:执行脚本时提示ADD附近语法错误

SQL列加密密钥轮换失败:执行脚本时提示ADD附近语法错误

嘿,我之前也碰到过类似的问题!你现在的脚本缺少了几个关键的必填参数,这就是为啥数据库会报语法错误。

在SQL Server里,用ALTER COLUMN ENCRYPTION KEY添加新的密钥值时,不能只指定列主密钥名称,还得加上加密算法以及该列主密钥加密后的列加密密钥值。正确的语法格式应该是这样的:

ALTER COLUMN ENCRYPTION KEY [myKeyName]
ADD VALUE
(
    COLUMN_MASTER_KEY = [myNewKeyName],
    ALGORITHM = 'RSA_OAEP',
    ENCRYPTED_VALUE = 0x<这里填用新列主密钥加密后的列加密密钥二进制值>
);

这里给你拆解下每个部分的作用:

  • ALGORITHM:必须指定为RSA_OAEP(这是目前SQL Server支持的唯一用于此操作的加密算法)
  • ENCRYPTED_VALUE:这是核心必填项,你需要先获取用新创建的myNewKeyName列主密钥加密后的列加密密钥的二进制值,不能留空或随意填写。

要是你不知道怎么生成这个ENCRYPTED_VALUE,可以用系统存储过程sys.sp_generate_column_encryption_key_value来获取,调用示例如下:

DECLARE @encrypted_value varbinary(MAX);
EXEC sys.sp_generate_column_encryption_key_value
    @column_master_key_name = N'myNewKeyName',
    @algorithm = N'RSA_OAEP',
    @encrypted_value = @encrypted_value OUTPUT;
SELECT @encrypted_value;

把这个存储过程返回的二进制值替换掉ALTER语句里的0x<...>部分,再执行脚本应该就能成功完成密钥轮换了。

备注:内容来源于stack exchange,提问作者RubenHerman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:28:01