J'utilise un produit qui fonctionne sur SQLServer 2008. Naturellement, la société qui le fournit n'offre pas de support SQLServer. Lorsque j'ai installé le produit, j'ai spécifié un mot de passe pour crypter la base de données. Je voudrais exécuter une autre copie du produit pour le tester sur un autre serveur. J'ai restauré la base de données sur un autre serveur et installé le produit sur cet autre serveur. Lorsque je l'ai installé, j'ai fourni le même mot de passe, puis restauré une sauvegarde à partir du serveur principal. Cependant, je reçois le message d'erreur:
System.Data.SqlClient.SqlException: An error occurred during decryption.
du produit. Je peux accéder aux tables à l'aide de SQLServer Management studio.
J'ai essayé ceci:
sur le premier serveur:
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'
)
sur le deuxième serveur:
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'
)
J'ai également essayé ceci sur le deuxième serveur:
alter MASTER KEY regenerate with enCRYPTION BY PASSWORD='password'
mais cela a donné un message d'erreur sur une clé asymétrique.
Comment puis-je restaurer la sauvegarde du premier serveur sur le deuxième serveur?
Mise à jour:
Il existe également une clé asymétrique et symétrique dans la base de données. Si j'ouvre la clé symétrique en utilisant la clé asymétrique, j'obtiens la même erreur, donc je pense que c'est pourquoi cela ne fonctionne pas - d'une manière ou d'une autre, les clés ne sont pas transférées de manière à pouvoir être utilisées.
la source