创建加密备份
适用范围: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)。