Korzystam z produktu działającego w SQLServer 2008. Zrozumiałe jest, że firma, która go dostarcza, nie oferuje obsługi SQLServer. Podczas instalacji produktu podałem hasło do zaszyfrowania bazy danych. Chciałbym uruchomić kolejną kopię produktu w celu przetestowania na innym serwerze. Przywróciłem bazę danych na inny serwer i zainstalowałem produkt na tym innym serwerze. Po zainstalowaniu podałem to samo hasło, a następnie przywróciłem kopię zapasową z głównego serwera. Jednak pojawia się komunikat o błędzie:
System.Data.SqlClient.SqlException: An error occurred during decryption.
z produktu. Mogę uzyskać dostęp do tabel za pomocą SQLServer Management studio.
Próbowałem tego:
na pierwszym serwerze:
CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff'
BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat'
WITH PRIVATE KEY
(
ENCRYPTION BY PASSWORD = 'mypassword',
FILE = 'd:\backup\cert1_privatekey.dat'
)
na drugim serwerze:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mypassword'
CREATE CERTIFICATE cert1 FROM FILE = 'd:\cert1.dat'
WITH PRIVATE KEY
(
FILE = 'd:\cert1_privatekey.dat',
DECRYPTION BY PASSWORD = 'mypassword'
)
Próbowałem również na drugim serwerze:
alter MASTER KEY regenerate with enCRYPTION BY PASSWORD='password'
ale to dało komunikat o błędzie dotyczący klucza asymetrycznego.
Jak mogę przywrócić kopię zapasową z pierwszego serwera na drugi serwer?
Aktualizacja:
W bazie danych znajduje się również klucz asymetryczny i symetryczny. Jeśli otworzę klucz symetryczny za pomocą klucza asymetrycznego, otrzymam ten sam błąd, więc myślę, że właśnie dlatego nie działa - w jakiś sposób klucze nie są przesyłane w taki sposób, że można ich użyć.
źródło