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
相关产品推荐
相关产品推荐

