【发布时间】:2017-12-21 21:26:36
【问题描述】:
类似的问题是asked before,但我相信情况略有不同,我也想了解任何替代解决方案。我现在处于信息过载阶段:\
SERVER A 上的数据库中的某些列已使用这种方法加密:
-- Key creation
USE [master];
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'ComplexPasswordHere';
CREATE CERTIFICATE MyDbCertificate01 WITH SUBJECT = 'MyDatabase Certificate 01';
CREATE SYMMETRIC KEY SSN_Key_01 WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE MyDbCertificate01;
-- Decryption example
USE [MyDB];
GO
OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE MyDbCertificate01;
SELECT
CONVERT(nvarchar(50), DECRYPTBYKEY(PasswordEnc)) AS [Password]
FROM
[tbl_Users]
CLOSE SYMMETRIC KEY SSN_Key_01;
此数据库需要恢复到 SERVER B,它已经有一个服务主密钥,用于管理该服务器上其他数据库的加密。
根据研究,其他作者表示我们可以使用 FORCE 备份/恢复 SMK,但我认为这会消除目标服务器上现有的加密:
问题就出在这里:当前机器 DMK 无法使用 使用另一个 SMK 加密的数据。它将无法解密,因为 SMK 变了。 Source
假设以上内容仍然准确,是否可以备份数据库以及证书,以使目标服务器能够成功解密数据?
有没有其他方法可以在不破坏目标服务器现有数据的情况下实现这一点?
【问题讨论】:
标签: sql-server encryption sql-server-2012