创建加密备份

适用范围:SQL Server

本文介绍使用 Transact-SQL 创建加密备份所需的步骤。 有关使用 SQL Server Management Studio 的示例,请参阅创建完整数据库备份

注意

若要还原加密数据库,你需要有用于加密该数据库的证书或非对称密钥的访问权限。 没有证书或非对称密钥,就无法还原相应数据库。 保存用于加密数据库加密密钥的证书,一直到你不需要保存备份。 有关详细信息,请参阅 SQL Server Certificates and Asymmetric Keys

先决条件

  • 用于加密备份的存储。 根据选择的选项,以下项之一:

    • 有充足空间用于创建数据库备份的本地磁盘或存储。
    • Azure 存储帐户和容器。 有关详细信息,请参阅创建存储帐户
  • master 数据库的数据库主密钥以及 SQL Server 实例上的证书或非对称密钥。 有关加密要求和权限,请参阅备份加密

创建数据库主密钥 (DMK)

选择密码来对存储于该数据库中的 DMK 副本进行加密。 连接到数据库引擎,启动新查询窗口并复制和粘贴以下示例,然后选择“执行”。

<master key password> 替换为密码,并确保在安全位置保留 DMK 和密码的副本。

USE master;
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master key password>';
GO

创建备份证书

master 数据库中创建备份证书。 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。

Use master;
GO

CREATE CERTIFICATE MyTestDBBackupEncryptCert
    WITH SUBJECT = 'MyTestDB Backup Encryption Certificate';
GO

使用加密备份数据库

有两个主要选项可用于创建加密备份:

  • 备份到磁盘
  • 备份到 Azure 存储

按照以下步骤向本地磁盘创建数据库的加密备份。 本例使用名为 MyTestDB 的用户数据库。

指定要使用的加密算法和证书。 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。

<path_to_local_backup> 替换为 SQL Server 有权写入的本地路径。 例如,此路径可能是 D:\SQLBackup

BACKUP DATABASE [MyTestDB]
TO DISK = N'<path_to_local_backup>\MyTestDB.bak'
WITH
COMPRESSION,
ENCRYPTION (
    ALGORITHM = AES_256,
    SERVER CERTIFICATE = MyTestDBBackupEncryptCert
),
STATS = 10;
GO

有关加密受可扩展的密钥管理 (EKM) 保护的备份的示例,请参阅使用 Azure 密钥保管库的可扩展密钥管理 (SQL Server)