仅2008版本后的企业版支持。
在master中创建主密钥:
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'h****n@123';
建议内部服务器上的SQLServer都建一样的,比较方便;仅防止将备份恢复到外部服务器上。
修改主密钥:
use master;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'hi****@123';
在master中,添加加密数据库用的证书
Use Master
GO
CREATE CERTIFICATE MyTestDBBackupEncryptCert
WITH SUBJECT = 'MyTestDB Backup Encryption Certificate';
GO
TestCert 是证书名称,可以根据需要随便起名,Subject 是主题,随便写就可以,长度不要超过128字节
应用1:
对数据库进行加密完整备份:
BACKUP DATABASE [test1]
TO DISK = N'C:\Backup\MyTestDB.bak'
WITH
COMPRESSION,
ENCRYPTION
(
ALGORITHM = AES_256,
SERVER CERTIFICATE = MyTestDBBackupEncryptCert
),
STATS = 10
GO
异机恢复时需要先在该实例导出证书:
USE master;
BACKUP CERTIFICATE MyTestDBBackupEncryptCert TO FILE = 'C:\Backup\MyTestDBBackupEncryptCert.bak'
WITH PRIVATE KEY ( FILE = 'C:\Backup\MyTestDBBackupEncryptCertPK.bak', ENCRYPTION BY PASSWORD = 'h***in@123' );
然后在目标实例创建master主密钥,同上,
之后拷贝之前的证书备份,并导入证书到目标实例
USE master;
CREATE CERTIFICATE MyTestDBBackupEncryptCert25 FROM FILE = 'D:\Backup\MyTestDBBackupEncryptCert.bak'
WITH PRIVATE KEY ( FILE = 'D:\Backup\MyTestDBBackupEncryptCertPK.bak', DECRYPTION BY PASSWORD = 'h***in@123' );
此后即可正常恢复加密的完整备份。
可以不加密差异备份和事务日志备份,毕竟是基于完整备份的。
对于报错“证书、非对称密钥或私钥文件无效或不存在;或是您不具有针对其的权限”,可以将SQLServer启动账户改为当前用户,并确保授权,之后关闭服务在开启(直接重启仍无法解决)。
一些参考文档:
https://www.genban.org/teach/teach-9411.html
http://t.zoukankan.com/xwgli-p-4522502.html
https://docs.microsoft.com/zh-cn/sql/t-sql/statements/drop-master-key-transact-sql?source=recommendations&view=sql-server-ver16
最后修改时间:2024-10-14 11:21:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




