SQL15466错误,解密过程出错的解决方案
在tempdb数据库中执行
ALTER SERVICE MASTER KEY FORCE REGENERATE
恢复SQL密钥即可。这里是随机产生一个密钥
说明:本例仅在SQLServer2005中成功过,其他版SQL没做测试!
如果是数据库服务器更改或牵移,可以采用备份与恢复的功能来进行
在原来的数据库服务器上新建查询,执行T-SQL脚本:
BACKUP SERVICE MASTER KEY TO FILE = 'path_to_file'
ENCRYPTION BY PASSWORD = 'AnyPasswordULike'
将SMK导出来之后复制到新的服务器上,然后执行:
RESTORE SERVICE MASTER KEY FROM FILE = 'path_to_file'
DECRYPTION BY PASSWORD = 'ThePasswordWhenUBackup' FORCE
注意在restore的时候必须使用 FORCE 选项,否则无法强制刷新SMK。这样restore之后,那些保存在数据库里面需要进行加解密(通常是密码)的信息就可以被正常读取了。