我必须制作远程SQL Server数据库的本地副本。我是通过使用任务>来完成的。从Management Studio备份。然后我在本地恢复备份,它似乎包含所有内容 - 表,用户,对称密钥和证书。
当我尝试执行需要打开对称密钥并通过证书解密的选择时,我收到此错误:
Please create a master key in the database or open the master key in the session before performing this operation.
为什么我被要求这样做,为什么它不会像在远程服务器上那样自动打开?
我尝试更改主密钥,但没有原始密码,我做不了多少。
答案 0 :(得分:6)
问题是SMK已经改变(因为机器已经改变)。有一篇文章解释它here。只需导出和导入SMK - 请记住复制到系统中的任何加密数据都是不可读的。
MSDN文章:
答案 1 :(得分:2)
这是一篇关于迁移包含加密的数据库的好文章:
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
答案 2 :(得分:1)
Same problem solved without data loss - if you have the password creating the master key
数据库中的主密钥由服务主密钥加密。使用主密钥时会自动打开。
现在,服务主密钥无法打开主密钥,并且SQL正在提示您“手动打开主密钥解密密码='密码'”或创建主密钥。
通过NEW SERVER的服务主密钥添加加密将再次允许自动打开主密钥。
感谢那些在链接中回答问题的人
答案 3 :(得分:0)
您无法绕过加密。有关Microsoft的官方消息,请参阅此link。
答案 4 :(得分:0)
首先,我还没有信誉对他人的帖子发表评论。如果是的话,我会在接受的答案上发表评论,说当有人回答的只是一堆链接但没有内容时,我看到这里的其他人抱怨,因为随着时间的流逝,这些链接会变质。我正在参加那起投诉。没有足够的信誉让我的否决票计数,但我还是拒绝了。
然后,我正在制定一个备份维护计划,其中包括一个带有一些加密列的数据库。除此相同的问题外,一切工作正常:在还原服务器上,我必须先打开DMK(数据库主密钥),然后再打开对称密钥(或进行内联解密),这在原始服务器上是不需要的。
我使用关键字从上面已接受的答案中现在失效的链接的URL在Google中进行搜索,这导致我想到了这一点:
restore database having encryption to other server
简而言之,在目标服务器上还原DMK之后,我运行以下命令,以便SMK(服务主密钥)将保存DMK的密码并在需要时自动打开它:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'yourStrongPassword';
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
现在,目标模仿源的行为(无缝解密)。