web-dev-qa-db-fra.com

Le certificat, la clé asymétrique ou le fichier de clé privée n'est pas valide ou n'existe pas

J'essaie d'effectuer une restauration d'une base de données à partir d'un serveur différent sur mon serveur localhost. Cette base de données est cryptée (le fichier bak), donc je dois la décrypter, c'est bien j'ai tous les fichiers cert et le mot de passe, mais pour une raison quelconque, je reçois toujours l'erreur suivante:

The certificate, asymmetric key, or private key file is not valid or does not exist; or you do not have permissions for it.

Voici le code que j'exécute:

      CREATE CERTIFICATE [Certificate1] 
FROM FILE = 'C:\Location of the certs'
WITH PRIVATE KEY ( 
    FILE = 'C:\Location of the certs' ,   
    DECRYPTION BY PASSWORD = 'password'
);

PS. Je ne suis pas un expert des sauvegardes et des restaurations.

3
Lucy

Voici les étapes que j'ai dû prendre pour restaurer la base de données cryptée sur un autre serveur (localhost).

1.Créez les certificats:

CREATE CERTIFICATE [CertficateName] 
FROM FILE = 'C:\FolderName\NameOfCert.cer'
WITH PRIVATE KEY ( 
    FILE = 'C:\FolderName\NameOfCertKey.key' ,   
    DECRYPTION BY PASSWORD = 'YourPassword'
);

2.

USE Master ;
Open Master Key Decryption by password = 'YourPassword'
Backup master key to file = 'C:\SQL FodlerName\MasterKeyName.key'
        ENCRYPTION BY PASSWORD = 'YourPassword';
    GO

3. restaurer la clé principale

Use master 
    restore master key
    FROM FILE = 'C:\FolderName\MasterKeyName.key'
    DECRYPTION BY PASSWORD = 'YourPassword'
    ENCRYPTION BY PASSWORD = 'YourPassword'

4. Il s'agit de la dernière étape, soyez prudent à ce stade car il m'a fallu un certain temps pour que chaque commande doive être exécutée séparément:

Alter Database [DatabaseName]
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE

Ensuite, exécutez-le séparément

USE MASTER
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'YourPassword';

La commande suivante s'exécute séparément

RESTORE DATABASE [DatabaseName] FROM DISK = 'C:\Folder\FULL\NameoftheBakFilethat ourAreRestoring.BAK' 
WITH Replace , STATS = 5 

N'oubliez pas de remettre en mode multi-utilisateur la Dabase.

2
Lucy