【问题标题】:Restore encrypted Backup in SQL在 SQL 中恢复加密备份
【发布时间】:2021-02-08 17:58:01
【问题描述】:

我用这个代码

USE master;  
GO  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1234';  
GO  
CREATE CERTIFICATE Cer
   WITH SUBJECT = 'Hello';  
   GO

然后用这段代码备份数据库

backup database Temp to disk = 'D:\Backup\temp.bak'
 WITH  
  COMPRESSION,  
  ENCRYPTION   
   (  
   ALGORITHM = AES_256,  
   SERVER CERTIFICATE = Cer
   ),
  STATS = 10

现在我无法将其还原到另一台服务器 我在另一台服务器上创建了这个主密钥,但它不起作用

【问题讨论】:

  • “不起作用”是什么意思?在另一台服务器上创建证书无济于事;它会有所不同。您需要在另一个实例上恢复密钥。

标签: sql sql-server tsql encryption backup


【解决方案1】:

master key 用于保护用于备份加密的certificatecertificate 是唯一的 - 为执行 CREATE CERTIFICATE 语句指定相同的名称会创建不同的证书。

如果不是这样,那么有权访问您的备份的每个人都可以解密它。

所以,你需要导出你的证书:

-- Backup the certificate
BACKUP CERTIFICATE BackupEncryptCert TO FILE = 'H:\MSSQL\Backup\Keys\BackupEncryptCert.cer'
    WITH PRIVATE KEY (FILE = 'H:\MSSQL\Backup\Keys\BackupEncryptCert.PrivateKey.pvk', 
    ENCRYPTION BY PASSWORD = 'doodle$7')
GO

然后在新实例上创建它:

-- Restoring a certificate from existing certificate backup
CREATE CERTIFICATE BackupEncryptCert
    FROM FILE = 'H:\MSSQL\Backup\Keys\BackupEncryptCert.cer'
    WITH PRIVATE KEY (FILE = 'H:\MSSQL\Backup\BackupEncryptCert.PrivateKey.pvk',
    DECRYPTION BY PASSWORD = 'doodle$7')
GO

然后您将能够恢复您的加密备份。

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 2010-10-11
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2017-11-09
    相关资源
    最近更新 更多