SQL: Kopiowanie bazy z szyfrowanymi danymi

14-Mar-2016

Po skopiowaniu bazy SSISDB z jednego serwera na inny pojawił się komunikat o braku Database Master Key (DMK). I słusznie. Na serwerze A DMK jest zaszyfrowany za pomocą Service Master Key (SMK). Ewentualne poufne dane pakietów SSIS w bazie SSISDB są z kolei zaszyfrowane przez DMK. Jeśli baza została przeniesiona na serwer B, to znajdujący się tam SMK nie może być używany do rozszyfrowania DMK, a tym samym traci się dostęp do zaszyfrowanych danych w bazie.

Aby naprawić sytuację, trzeba skopiować DMK z serwera A na serwer B, tak aby zaszyfrował się na serwerze B za pomocą znajdującego się tam SMK. Na serwerze A należy więc wykonać backup key, a na serwerze B restore key. A oto szczegóły:

Najpierw przejdź do omawianej bazy:

USE SSISDB
GO

Zobacz, jakie klucze są aktualnie zdefiniowane (powinien pojawić się Database Master Key)

SELECT * FROM sys.symmetric_keys

Wykonaj kopię klucza:

BACKUP MASTER KEY TO FILE = 'N:\SQLServer\ssisdb_mk.bak'
    ENCRYPTION BY PASSWORD = 'Pa$$w0rd'

A teraz na serwerze docelowym – przejdź do omawianej bazy:

USE SSISDB

GO

Odtwórz klucz. Ponieważ klucz już tam jest (ale nieczytelny) należy użyć opcji FORCE.

RESTORE MASTER KEY
    FROM FILE = 'I:\SQLServer\ssisdb_mk.bak'
    DECRYPTION BY PASSWORD = 'Pa$$w0rd'
    ENCRYPTION BY PASSWORD = 'Pa$$w0rd'
     FORCE;
GO

I wreszcie sprawdź, czy klucz jest widoczny:

SELECT * FROM sys.symmetric_keys

Dodaj komentarz:

Autor: admin