Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur de clé principale ouverte SQL Server 2008 lors du changement de serveur physique

La clé principale de la base de données est chiffrée à l'aide de la clé principale du serveur, qui est spécifique à la machine sur laquelle SQL Server est installé. Lorsque vous déplacez la base de données vers un autre serveur, vous perdez la possibilité de déchiffrer et d'ouvrir automatiquement la clé principale de la base de données car la clé du serveur local sera très probablement différente. Si vous ne pouvez pas déchiffrer la clé principale de la base de données, vous ne pouvez pas déchiffrer quoi que ce soit d'autre qui en dépend (certificats, clés symétriques, etc.).

Fondamentalement, vous souhaitez rechiffrer la clé principale de la base de données par rapport à la nouvelle clé du serveur, ce qui peut être fait avec ce script (en utilisant les privilèges d'administrateur) :

-- 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

Notez que lorsque vous créez une clé principale de base de données, vous devez toujours fournir également un mot de passe afin de pouvoir ouvrir la clé à l'aide du mot de passe dans le cas où la clé principale de service ne peut pas être utilisée - j'espère que vous avez ce mot de passe stocké quelque part !

Alternativement, vous pouvez restaurer une sauvegarde de la clé principale de la base de données - mais vous en avez besoin d'une qui a été créée pour le serveur cible, pas le serveur source.

Si vous n'avez ni sauvegarde ni mot de passe, je ne suis pas sûr que vous puissiez récupérer les données chiffrées sur le nouveau serveur, car vous devrez supprimer et recréer la clé principale de la base de données avec un nouveau mot de passe, qui tuera toutes les clés et données dépendantes.