今天测试将加密的数据库还原到另外一台服务器,执行解密代码的时候出现下面的错误信息:Msg15581,Level16,State3,Line1Pleasecreatea&..
今天测试将加密的数据库还原到另外一台服务器,执行解密代码的时候出现下面的错误信息:
Msg 15581, Level 16, State 3, Line 1
Please create a master key in the database or open themaster key in the session before performing this operation.
解决办法1:用密码打开Database Master key
解决办法2:可以还原服务主密匙。
参考:OPEN MASTER KEY RESTORESERVICE MASTER KEY (Transact-SQL)
注意: 因为ServiceMaster Key是加密层次的根,如果有其他数据库已经用Service Master Key做过加密会导致问题,所以慎重使用。
原因: 默认情况下,数据库主密钥使用服务主密钥进行加密,,需要此数据库主密钥进行解密或加密时,它将自动打开。如果数据库第一次附加或还原到新的 SQL Server 实例时,数据库主密钥(由服务主密钥加密)的副本尚未存储在服务器中。 必须使用 OPEN MASTER KEY 语句解密数据库主密钥 (DMK)。 一旦 DMK 解密后,通过使用 ALTER MASTER KEY REGENERATE 语句向服务器提供 DMK(使用服务主密钥 (SMK) 加密)的副本,即可拥有将来启用自动解密的选项。
本文出自 “关注SQL Server技术” 博客,请务必保留此出处