Wednesday, November 29, 2017

Restore encrypted database on another server

Wenn man versucht eine verschluesselte Datenbank auf einem neuen Server wiederherzustellen, bekommt man den folgenden Fehler:

Msg 33111, Level 16, State 3, Line 4 Cannot find server certificate with thumbprint '0x9CEACF12A2671515B3EXXXXXXXXXXXXXXXXXXXXXX'. Msg 3013, Level 16, State 1, Line 4 RESTORE DATABASE is terminating abnormally.


Der Grund ist es, dass auf dem neuen Server der Service Master Key anders ist und keine Master key und Certificate vorhanden sind. Sie muessen restored bzw. erstellt werden. -- Einmalig, danach ist der service master key immer der neue. Ihn kann man nicht droppen. Er steht ganz oben in der Encryption Hierarchy. Jede sql server Instanz hat einen service master key

RESTORE SERVICE MASTER KEY FROM FILE = 'E:\Cert\ServiceMasterKey' DECRYPTION BY PASSWORD = 'password';
GO

-- diese keys muessen davor mit backup gesichert sein. Hier wird es restore gemacht.

RESTORE MASTER KEY FROM FILE = 'E:\Cert\MasterKey'
  DECRYPTION BY PASSWORD = 'password'
 ENCRYPTION BY PASSWORD = 'password'
GO

dann muss der key geoeffnet und das certificate erstellt werden
wenn man folgende Befehle nicht ausfuehrt, bekommt man den folgenden Fehler:

Msg 15581, Level 16, State 7, Line 26 Please create a master key in the database or open the master key in the session before performing this operation.

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'
go
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO
CREATE CERTIFICATE XXXCertificate
FROM FILE = 'E:\Cert\Certificate' WITH PRIVATE KEY
(FILE = 'E:\Cert\CertificateKey' , DECRYPTION BY PASSWORD = 'password');
GO

-- nun kann man die Datanbank wiederherstellen.

No comments: