Klucz główny bazy danych jest szyfrowany przy użyciu klucza głównego serwera, który jest specyficzny dla komputera, na którym zainstalowany jest program SQL Server. Po przeniesieniu bazy danych na inny serwer tracisz możliwość automatycznego odszyfrowania i otwarcia głównego klucza bazy danych, ponieważ klucz serwera lokalnego najprawdopodobniej będzie inny. Jeśli nie możesz odszyfrować głównego klucza bazy danych, nie możesz odszyfrować niczego, co od niego zależy (certyfikaty, klucze symetryczne itp.).
Zasadniczo chcesz ponownie zaszyfrować klucz główny bazy danych za pomocą nowego klucza serwera, co można zrobić za pomocą tego skryptu (przy użyciu uprawnień administratora):
-- Reset database master key for server (if database was restored from backups on another server)
OPEN MASTER KEY DECRYPTION BY PASSWORD = '---your database master key password---'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO
Należy pamiętać, że podczas tworzenia klucza głównego bazy danych należy zawsze podać hasło, aby można było otworzyć klucz za pomocą hasła w scenariuszu, w którym nie można użyć klucza głównego usługi — miejmy nadzieję, że hasło jest gdzieś przechowywane!
Alternatywnie możesz przywrócić kopię zapasową klucza głównego bazy danych - ale potrzebujesz takiego, który został utworzony dla serwera docelowego, a nie serwera źródłowego.
Jeśli nie masz ani kopii zapasowej, ani hasła, nie jestem pewien, czy będziesz w stanie odzyskać zaszyfrowane dane na nowym serwerze, ponieważ będziesz musiał usunąć i odtworzyć klucz główny bazy danych z nowym hasłem, który zabije wszystkie zależne klucze i dane.