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:
1 |
USE SSISDB |
1 |
GO |
Zobacz, jakie klucze są aktualnie zdefiniowane (powinien pojawić się Database Master Key)
1 |
SELECT * FROM sys.symmetric_keys |
Wykonaj kopię klucza:
1 |
BACKUP MASTER KEY TO FILE = 'N:\SQLServer\ssisdb_mk.bak' |
1 |
ENCRYPTION BY PASSWORD = 'Pa$$w0rd' |
A teraz na serwerze docelowym – przejdź do omawianej bazy:
1 |
USE SSISDB |
GO
Odtwórz klucz. Ponieważ klucz już tam jest (ale nieczytelny) należy użyć opcji FORCE.
1 |
RESTORE MASTER KEY |
1 |
FROM FILE = 'I:\SQLServer\ssisdb_mk.bak' |
1 |
DECRYPTION BY PASSWORD = 'Pa$$w0rd' |
1 |
ENCRYPTION BY PASSWORD = 'Pa$$w0rd' |
1 |
FORCE; |
1 |
GO |
I wreszcie sprawdź, czy klucz jest widoczny:
1 |
SELECT * FROM sys.symmetric_keys |