使用服务器主密钥对数据库主密钥进行加密,该服务器主密钥特定于安装sql Server的计算机。将数据库移动到另一台服务器时,您将失去自动解密和打开数据库主密钥的能力,因为本地服务器密钥很可能会有所不同。如果无法解密数据库主密钥,则无法解密依赖于该数据库的其他任何密钥(证书,对称密钥等)。
基本上,您想使用新的服务器密钥对数据库主密钥进行重新加密,可以使用以下脚本(使用管理员权限)完成该操作:
-- Reset database master key for server (if database was restored from backups on another server)
OPEN MASTER KEY DECRYPTION BY PASSWORD = '---your database master key password---'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO
请注意,在创建数据库主密钥时,还应始终提供密码,以便在无法使用服务主密钥的情况下可以使用该密码打开密钥-希望您已将该密码存储在某处!
或者,您可以还原数据库主密钥的备份-但您需要为目标服务器而非源服务器创建的备份。
如果您既没有备份也没有密码,那么我不确定您是否能够在新服务器上恢复加密数据,因为您将不得不删除并使用新密码重新创建数据库主密钥,这将杀死所有相关的键和数据。