Ken*_*her 5 sql-server-2008-r2 transparent-data-encryption
这是我第一次使用 TDE,所以希望我没有做任何可怕的错误。
我正在尝试将我的 TDE 数据库从一台服务器移动到另一台服务器。我在新服务器的主数据库上创建了一个主密钥。然后我使用以下命令从备份中恢复了我的证书:
CREATE CERTIFICATE MyServerCert
FROM FILE = 'CertBackupFile'
Run Code Online (Sandbox Code Playgroud)
当我最初创建它时,我没有私人加密密钥,所以我只是用密码对其进行了加密。
现在,当我尝试恢复 TDE 的备份时,出现以下错误
Msg 15507, Level 16, State 1, Line 2
A key required by this operation appears to be corrupted.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)
我试过查看 create 语句,但看不到我可以在哪里输入原始密码。此外,当我查看原始服务器上的 sys.certificates pvt_key_encryption_type_desc = ENCRYPTED_BY_MASTER_KEY 时,但在新服务器上显示 NO_PRIVATE_KEY。所以我认为我在创建时做错了。
谁能指出我正确的方向来解决这个问题?
您将需要在新服务器上创建主密钥 - 如果它尚未存在。
USE MASTER;
GO
if not exists (select 1 from sys.symmetric_keys where name = '##MS_DatabaseMasterKey##')
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Strong_Password';
Run Code Online (Sandbox Code Playgroud)
然后你必须恢复你的证书:
CREATE CERTIFICATE serverCert FROM FILE = 'C:\cert_Backups\servercert.cer'
WITH PRIVATE KEY (FILE = 'C:\cert_Backups\servercert.key'
,DECRYPTION BY PASSWORD = 'strong_Passw0rD')
GO
Run Code Online (Sandbox Code Playgroud)
但要使其发挥作用,您必须确保使用私钥对原始证书进行了备份。
Backup certificate ServerCert
to file = 'C:\cert_Backups\servercert.cer'
with private key (file = 'C:\cert_Backups\servercert.key',
encryption By Password = 'strong_Passw0rD')
GO
Run Code Online (Sandbox Code Playgroud)
如果您只有 cer 文件而没有密钥,则需要再次备份证书
归档时间: |
|
查看次数: |
565 次 |
最近记录: |