web-dev-qa-db-ja.com

証明書、非対称キー、または秘密キーファイルが無効であるか、存在しません

別のサーバーからローカルホストサーバーにデータベースの復元を実行しようとしています。そのデータベースは暗号化されているため(bakファイル)、それを復号化する必要があります。これは、すべての証明書ファイルとパスワードを持っているので問題ありませんが、何らかの理由で、私はまだ次のエラーが発生します:

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

これは私が実行しているコードです:

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

PS。私はバックアップと復元の専門家ではありません。

3
Lucy

暗号化されたデータベースを別のサーバー(localhost)に復元するために必要な手順は次のとおりです。

1.証明書を作成します。

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.マスターキーの復元

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

4.これは最後のステップです。この段階では、各コマンドを個別に実行する必要があることを確認するのにしばらく時間がかかったので注意してください。

Alter Database [DatabaseName]
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE

次にそれを個別に実行します

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

次のコマンドは個別に実行されます

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

Dabaseをマルチユーザーモードに戻すことを忘れないでください。

2
Lucy