Два года назад я использовал приведенный ниже код для шифрования (TDE) базы данных в SQL Server 2008.
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')
Я сделал полную резервную копию базы данных БД и certificate_DB_Certificate.cer & certificate_DB_Key.pvk и сохранил ее на свой жесткий диск. Через два года я использовал другой компьютер для восстановления ГЛАВНОГО КЛЮЧА и СЕРТИФИКАТА, поэтому я могу восстановить файл резервной копии.
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')
После запуска кода я получил это сообщение
Предупреждение: срок действия созданного вами сертификата истек.
Итак, я удаляю СЕРТИФИКАТ и меняю дату ПК на 2015 / июнь (дата создания СЕРТИФИКАТА), затем я заново создаю сертификат с успешно выполненной командой, но когда я восстанавливаю файл резервной копии, я получил это сообщение
Не удалось восстановить базу данных «DB».
(Microsoft.SqlServer.Management.RelationalEngineTasks) System.Data.SqlClient.SqlError: не удается найти сертификат сервера с отпечатком «0xFC01AD2683E08A4C8CD6A0F037DC66A945FBA44D». (Microsoft.SqlServer.SmoExtended)
Какие-либо предложения?