正在还原SQL Server数据库-未打开主密钥



我必须制作远程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的官方文字。

最新更新