我必须制作远程SQL Server数据库的本地副本。我使用"任务">"从Management Studio备份"来完成此操作。然后,我在本地恢复了备份,它似乎包含了所有内容——表、用户、对称密钥和证书。
当我尝试执行一个要求我打开对称密钥并通过证书解密的选择时,我会得到以下错误:
Please create a master key in the database or open the master key in the session before performing this operation.
为什么有人问我这个问题,为什么它不像在远程服务器上那样自动打开?
我试过更改主密钥,但没有原始密码,我做不了什么。
问题是SMK发生了变化(因为机器发生了变化)。这里有一篇文章对此进行了解释。只需导出和导入SMK,请记住复制到系统中的任何加密数据都将无法读取。
MSDN文章:
- 备份SMK
- 恢复SMK
我正在制定一个备份维护计划,其中包括一个带有一些加密列的数据库。除了这个问题之外,一切都很好:在还原服务器上,我必须在打开对称密钥(或进行内联解密)之前打开DMK(数据库主密钥),这在原始服务器上是不需要的。
我使用关键词在谷歌中从上面已被接受的答案中的死链接的URL进行搜索,这让我找到了这个:
将已加密的数据库恢复到其他服务器
简而言之,在目标服务器上恢复DMK后,我运行以下操作,以便SMK(服务主密钥)保存DMK的密码,并在需要时自动打开:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'yourStrongPassword';
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
现在,目标模拟源的行为(无缝解密)。
这里有一篇关于迁移包含加密的数据库的好文章:
http://www.sql-server-performance.com/2009/migrating-databases-checklist-part3/3/
但简而言之,你需要知道原始密码才能移动它
您可以备份和恢复密钥(如您所说的复制),但您需要访问远程服务器、创建备份或使用原始密码复制备份:
http://msdn.microsoft.com/en-us/library/ff848768.aspx
这个论坛对话也可能被证明对洞察有用:
http://www.sqlservercentral.com/Forums/Topic775644-146-1.aspx
在没有数据丢失的情况下解决了相同的问题-如果您有创建主密钥的密码
数据库中的主密钥已由服务主密钥加密。当你使用万能钥匙时,它会自动打开。
现在,服务主密钥无法打开主密钥,SQL将提示您手动"通过PASSWORD='PASSWORD'打开主密钥解密"或创建主密钥。
通过NEW SERVER的服务主密钥添加加密将再次允许自动打开主密钥。
感谢那些在链接
您无法绕过加密。请参阅此链接以获取Microsoft的官方文字。