我有点左右为难,需要一些帮助。我们正在将sql server 2014 enterprise edition从本地迁移到aws sql server 2017 enterprise system。
当前系统包含用于列级加密的tde和对称密钥加密。这就是乐趣的开始。我能够将数据库还原到新的2017示例,并且tde在还原后正常工作。对称密钥列级加密不起作用。
使用以下代码创建对称加密:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'passwowrd';
CREATE CERTIFICATE AUPW WITH SUBJECT = 'AccountsUsers-Credentials';
CREATE SYMMETRIC KEY AccountsUsers_Credentials
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE AUPW;
然后,在尝试将主密钥和对称密钥恢复到新服务器时,我将执行以下步骤。
在sql server 2014示例上:
OPEN MASTER KEY DECRYPTION BY PASSWORD = N'password';
GO
BACKUP MASTER KEY
TO FILE = N'...\MSSQL\DATA\masterkey.dmk'
ENCRYPTION BY PASSWORD = 'password'
GO
BACKUP CERTIFICATE AUPW
TO FILE ='...\MSSQL\DATA\AUPW.cer'
WITH PRIVATE KEY
(FILE ='...\MSSQL\DATA\AUPW.pk', ENCRYPTION BY PASSWORD ='password')
在sql server 2017示例上,在还原数据库并确保tde正常工作且数据库可访问之后,我尝试运行以下代码:
USE NewDB
GO
RESTORE MASTER KEY
FROM FILE = N'...\MSSQL\DATA\Masterkey.dmk'
decryption by password = 'password'
encryption by password = 'password'
GO
CREATE CERTIFICATE AUPW FROM FILE ='...\MSSQL\DATA\AUPW.cer'
WITH PRIVATE KEY(FILE='...\MSSQL\DATA\AUPW.pk',
DECRYPTION BY PASSWORD='password',
ENCRYPTION BY PASSWORD='password');
但是,在运行restore master key命令时,出现以下错误:
消息15329,级别16,状态30,第43行
无法解密当前主密钥。如果这是数据库主密钥,则应在执行此操作之前尝试在会话中打开它。force选项可用于忽略此错误并继续操作,但由旧主密钥加密的数据将丢失。
我试着打开主密钥,得到了错误,但是我使用的密码与备份dbmk时打开它时使用的密码相同。
消息15313,16级,状态1,第41行
密钥未使用指定的解密程序加密。
force选项也不起作用,创建新的主密钥也不起作用。
有人看到我做错什么了吗?我现在唯一想做的另一件事是在迁移之前关闭所有加密,但我并不真正喜欢这个选项。
谢谢你的帮助。
1条答案
按热度按时间z31licg01#
目标中出现错误的原因是由于目标中的服务主密钥(在sql server示例级别)与源中的不同。
数据库主密钥由源服务器上的服务主密钥加密。参考第条
因此,在源代码中,在备份之前,首先需要删除服务主密钥加密,并添加额外的密码加密。
恢复后,在目标中,必须执行以下步骤:
请参阅以下文章:
加密步骤
启用加密的数据库的备份和还原步骤