将TDE加密数据库备份还原到其他服务器 - SQL Server 2008

时间:2018-04-04 19:41:07

标签: sql-server database-restore tde

两年前,我使用以下代码在SQL Server 2008中加密(TDE)数据库

USE MASTER; 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Strong Password'
GO

USE MASTER; 
CREATE CERTIFICATE DB_CER WITH SUBJECT = 'DB Certificate'
GO

USE DB

GO 
CREATE DATABASE ENCRYPTION KEY WITH 
ALGORITHM = AES_256 ENCRYPTION BY 
SERVER CERTIFICATE DB_CER ; 
GO

USE  DB
ALTER DATABASE  DB
SET ENCRYPTION ON ; 
GO

USE master; 
GO 
BACKUP CERTIFICATE DB_CER 
TO FILE = 'c:\Backup\certificate_DB_Certificate.cer'
WITH PRIVATE KEY
(FILE = 'c:\Backup\certificate_DB_Key.pvk',
ENCRYPTION BY PASSWORD = 'Strong Password')

我为DB数据库和certificate_DB_Certificate.cer& certificate_DB_Key.pvk并将其保存到我的硬盘中。 两年后,我使用不同的PC来恢复MASTER KEY& CERTIFICATE,所以我可以恢复备份文件

CREATE CERTIFICATE DB_CER
FROM FILE = 'D:\Backup\certificate_DB_Certificate.cer'     
WITH PRIVATE KEY (FILE = 'D:\Backup\certificate_OCV_DB_Key.pvk', 
DECRYPTION BY PASSWORD = 'Strong Password')

运行代码后,我收到了此消息

  

警告:您创建的证书已过期。

所以我删除了CERTIFICATE并将Pc日期更改为2015 / Jun(创建CERTIFICATE的日期)然后我使用成功完成的命令再次重新创建证书,但是当我恢复备份文件时,我得到了这个消息

  

恢复数据库'DB'失败   (Microsoft.SqlServer.Management.RelationalEngineTasks)   System.Data.SqlClient.SqlError:找不到带有指纹'0xFC01AD2683E08A4C8CD6A0F037DC66A945FBA44D'的服务器证书。 (Microsoft.SqlServer.SmoExtended)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

“证书过期”消息是警告,不是错误。您仍然可以使用过期的证书。

使用更改的日期删除创建的证书,然后使用正确的日期再次还原证书。