当我为数据库制作数据库主密钥时:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Some Long Password'
Microsoft 的此页面建议我将其备份到异地:
http://msdn.microsoft.com/en-us/library/ms174382.aspx
我已经通过测试确认在您备份数据库时存储了主密钥。我已经在备份数据库,并且已经安全地存储了密码。那么为什么我也需要备份万能钥匙呢?
(顺便说一句,我已经在备份服务主密钥并在异地存储)。
我主要在将数据库移动或复制到 SQL Server 的新实例时使用它们。在这种情况下,数据库中的 DMK 将使用新实例的服务主密钥重新加密,但由 DMK 加密的对象(在您的情况下为对称密钥)将不会相应更新。您需要使用 FORCE 选项从单独的备份中恢复 DMK,以允许自动解密对象。
是的,记录一下:密钥损坏很少见,它们将通过与数据库中任何其他数据相同的机制(即 CHECKDB)进行验证。但是,我仍然会保留您使用的所有加密密钥的备份——主密钥、证书、对称密钥等。在所有这些情况下,如果您丢失了密钥,您将永远无法解密相关数据。不必在每次数据库备份时都备份密钥,但在创建或修改它们时备份它们是很好的保险。
从文档备份数据库主密钥
因此,如果主密钥在数据库备份、存储或恢复期间损坏,则恢复的加密数据(包括备份中的其他密钥/证书)以及它们用于加密的任何数据可能无法恢复,除非您可以提供原始的、未损坏的主密钥。