Главният ключ на базата данни е шифрован с помощта на главния ключ на сървъра, който е специфичен за машината, на която е инсталиран SQL Server. Когато преместите базата данни на друг сървър, вие губите способността автоматично да дешифрирате и отваряте главния ключ на базата данни, тъй като ключът на локалния сървър най-вероятно ще бъде различен. Ако не можете да дешифрирате главния ключ на базата данни, не можете да дешифрирате нищо друго, което зависи от него (сертификати, симетрични ключове и т.н.).
По принцип искате да шифровате отново главния ключ на базата данни спрямо новия ключ на сървъра, което може да се направи с този скрипт (като се използват администраторски привилегии):
-- 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
Обърнете внимание, че когато създавате главен ключ на базата данни, винаги трябва да предоставяте и парола, за да можете да отворите ключа с помощта на паролата в сценария, в който главният ключ на услугата не може да се използва - надяваме се, че сте съхранили тази парола някъде!
Като алтернатива можете да възстановите резервно копие на главния ключ на базата данни - но имате нужда от такъв, който е създаден за целевия сървър, а не за сървъра източник.
Ако нямате резервно копие или парола, тогава не съм сигурен, че ще можете да възстановите криптираните данни на новия сървър, тъй като ще трябва да изпуснете и да създадете отново главния ключ на базата данни с нова парола, което ще унищожи всички зависими ключове и данни.