我刚刚开始尝试加密备份,我想我现在理解它并且已经使该过程正常工作,但是还原时发生了一些奇怪的事情。
在服务器 A(SQL 2014 标准)上,我创建了一个新的主密钥和证书,并成功生成了一个加密的 bak 文件,并且还导出了密钥和证书文件。
在服务器 B (SQL 2014 Developer) 上,我已成功从服务器 A 恢复主密钥和证书。
我知道这些工作正常,因为我可以使用以下语法将加密的 bak 文件成功恢复到两台服务器:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'xxx';
RESTORE DATABASE testDb FROM DISK = 'C:\testDb.bak' WITH STATS = 5;
CLOSE MASTER KEY;
但在 SSMS 中使用“还原数据库”工具时,情况就不一样了。
恢复到服务器 A 时它工作正常。
但是当使用 UI 恢复到服务器 B 时,它只会给出一条基本消息“没有选择要恢复的备份集”。
为什么会这样?
更新:我刚刚注意到在使用命令恢复备份时,如果我先打开主密钥,它只会在服务器 B 上工作,否则它会给出消息Please create a master key in the database or open the master key
。
在服务器 AI 上不需要这样做,就好像服务器 A 上的密钥始终打开一样
我建议您尝试拆除您的设置并重新开始。只要您的证书都到位,您应该能够从 SSMS GUI 恢复。如果没有您的设置脚本,就很难对可能出现的问题进行故障排除。
首先,在Server A上,您需要创建一个主密钥:
然后,创建要在备份中使用的证书:
并备份该证书,以便您可以在另一台服务器上恢复它:
现在,进行加密备份(您可以使用 GUI,但这里是 T-SQL):
现在,我们将翻转Server B,并创建一个主密钥(注意:我实际上不需要从另一台服务器备份/恢复主密钥):
现在从备份中创建该证书:
最后,进入还原数据库 GUI,选择我们从服务器 A 创建的数据库备份: 您会看到它成功读取了备份文件,并在还原数据库屏幕的底部网格中显示了备份集:
点击确定,一切都成功恢复。(您可能需要进入“文件”屏幕来修改要恢复的数据文件的位置。)