Databasehovednøglen krypteres ved hjælp af serverhovednøglen, som er specifik for den maskine, hvor SQL Server er installeret. Når du flytter databasen til en anden server, mister du muligheden for automatisk at dekryptere og åbne databasens hovednøgle, fordi den lokale servernøgle højst sandsynligt vil være anderledes. Hvis du ikke kan dekryptere databasens hovednøgle, kan du ikke dekryptere noget andet, der afhænger af det (certifikater, symmetriske nøgler osv.).
Grundlæggende vil du genkryptere databasens hovednøgle mod den nye servernøgle, hvilket kan gøres med dette script (ved hjælp af administratorrettigheder):
-- 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
Bemærk, at når du opretter en database-hovednøgle, bør du også altid angive en adgangskode, så du kan åbne nøglen ved hjælp af adgangskoden i det scenarie, hvor tjenestens hovednøgle ikke kan bruges - forhåbentlig har du den adgangskode gemt et sted!
Alternativt kan du gendanne en sikkerhedskopi af databasens hovednøgle - men du har brug for en, der er oprettet til målserveren, ikke kildeserveren.
Hvis du ikke har fået enten en backup eller en adgangskode, så er jeg ikke sikker på, at du vil være i stand til at gendanne de krypterede data på den nye server, da du bliver nødt til at droppe og genskabe databasens hovednøgle med en ny adgangskode, som vil dræbe alle afhængige nøgler og data.