AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 989930
Accepted
userSteve
userSteve
Asked: 2019-10-31 04:41:19 +0800 CST2019-10-31 04:41:19 +0800 CST 2019-10-31 04:41:19 +0800 CST

为什么我无法通过前端恢复加密备份?

  • 772

我刚刚开始尝试加密备份,我想我现在理解它并且已经使该过程正常工作,但是还原时发生了一些奇怪的事情。

在服务器 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 上的密钥始终打开一样

sql-server
  • 1 1 个回答
  • 107 Views

1 个回答

  • Voted
  1. Best Answer
    AMtwo
    2019-10-31T19:02:51+08:002019-10-31T19:02:51+08:00

    我建议您尝试拆除您的设置并重新开始。只要您的证书都到位,您应该能够从 SSMS GUI 恢复。如果没有您的设置脚本,就很难对可能出现的问题进行故障排除。

    首先,在Server A上,您需要创建一个主密钥:

    USE master
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'SecretPassword!';
    

    然后,创建要在备份中使用的证书:

    USE master
    GO
    CREATE CERTIFICATE BackupEncryptTestCert
        WITH SUBJECT = 'AMtwo_BackupCertificate';
    

    并备份该证书,以便您可以在另一台服务器上恢复它:

    BACKUP CERTIFICATE BackupEncryptTestCert
        TO FILE = 'C:\temp\AMtwo_BACKUP_CERTIFICATE.cer'
        WITH PRIVATE KEY
        (
            FILE = 'C:\temp\AMtwo_BACKUP_CERTIFICATE_PRIVATE_KEY.key',
            ENCRYPTION BY PASSWORD = 'Super-DuperSecretPassword!'
        );
    

    现在,进行加密备份(您可以使用 GUI,但这里是 T-SQL):

    BACKUP DATABASE Floop 
        TO  DISK = N'C:\SQL\BAK\Floop.bak' 
        WITH INIT, FORMAT,
            ENCRYPTION(ALGORITHM = AES_256, SERVER CERTIFICATE = BackupEncryptTestCert);
    

    现在,我们将翻转Server B,并创建一个主密钥(注意:我实际上不需要从另一台服务器备份/恢复主密钥):

    USE master
    GO
    CREATE CERTIFICATE BackupEncryptTestCert
        WITH SUBJECT = 'AMtwo_BackupCertificate';
    

    现在从备份中创建该证书:

    CREATE CERTIFICATE BackupEncryptTestCert 
        FROM FILE ='C:\temp\AMtwo_BACKUP_CERTIFICATE.cer'
        WITH PRIVATE KEY
        (
            FILE='C:\temp\AMtwo_BACKUP_CERTIFICATE_PRIVATE_KEY.key', 
            DECRYPTION BY PASSWORD = 'Super-DuperSecretPassword!'
        );
    

    最后,进入还原数据库 GUI,选择我们从服务器 A 创建的数据库备份: 选择备份设备 您会看到它成功读取了备份文件,并在还原数据库屏幕的底部网格中显示了备份集: 恢复数据库

    点击确定,一切都成功恢复。(您可能需要进入“文件”屏幕来修改要恢复的数据文件的位置。)

    • 3

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve