两年前,我使用以下代码在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)
有什么建议吗?
答案 0 :(得分:0)
“证书过期”消息是警告,不是错误。您仍然可以使用过期的证书。
使用更改的日期删除创建的证书,然后使用正确的日期再次还原证书。