Freigeben über


Fehler 33111 beim Wiederherstellen von Sicherungen aus älteren Versionen von SQL Server-Connector für Microsoft Azure Key Vault

Ursprüngliche KB-Nummer: 4470999

In diesem Artikel wird ein Fehler beschrieben, der auftritt, wenn Sie versuchen, eine transparente Datenverschlüsselungssicherung (Transparent Data Encryption, TDE) wiederherzustellen, die auf Servern erstellt wird, die ältere Versionen von SQL Server Connector für den Microsoft Azure Key Vault verwenden.

Problembeschreibung

Es treten Probleme auf, wenn Sie versuchen, eine Datenbanksicherung aus SQL Server wiederherzustellen, die SQL Server Connector für Key Vault 1.0.4.0 oder eine frühere Version auf SQL Server-Connector für Microsoft Azure Key Vault 1.0.5.0 verwendet.

Gehen Sie davon aus, dass Sie die folgenden Instanzen von Microsoft SQL Server bereitstellen:

  • SQL Server-Instanz sql1 verfügt über SQL Server Connector für Key Vault 1.0.4.0 bereitgestellt.

  • SQL Server-Instanz sql2 verfügt über SQL Server Connector für Key Vault 1.0.5.0 bereitgestellt.

  • Verwenden Sie die folgende Abfrage, um einen asymmetrischen Schlüssel für beide und sql1 sql2 Instanzen aus derselben asymmetrischen Schlüsselquelle im Key Vault bereitzustellen:

    CREATE ASYMMETRIC KEY TDE_KEY 
    FROM PROVIDER AzureKeyVaultProvider 
    WITH PROVIDER_KEY_NAME = 'key1', 
    CREATION_DISPOSITION = OPEN_EXISTING
    

Wenn Sie den Wert von Fingerabdrucken auf beiden Servern überprüfen, werden Sie feststellen, dass sich die Längen des Fingerabdrucks unterscheiden, obwohl sie aus derselben Quelle erstellt werden. Der Fingerabdruck der Version 1.0.5.0 ist länger als Version 1.0.4.0.

Beispiel für 1.0.4.0 Fingerabdruck:

0x2C5677D76F76D77F80

Beispiel für 1.0.5.0 Fingerabdruck:

0x373B314B78E8D59A0925494558FEF14B726216C5

Die Änderung verursacht Probleme bei Sicherungs- und Wiederherstellungsvorgängen.

Beispiel:

Sie verfügen über eine Datenbanksicherung, die von einem asymmetrischen Schlüssel im Key Vault in der sql1 Instanz verschlüsselt wird.

Die sql2 Instanz hat einen asymmetrischen Schlüssel erstellt.

Wenn Sie versuchen, die Sicherung für die sql2 Instanz wiederherzustellen, schlägt der Vorgang fehl und gibt eine Fehlermeldung zurück, die der folgenden Meldung ähnelt:

Msg 33111, Level 16, State 4, Line <LineNumber>

Serversymmetrischer Schlüssel mit Fingerabdruck "0x2C5677D76F76D77F80" wurde nicht gefunden.

Hinweise:

Die Abfrage zum Abrufen des Fingerabdrucks der einzelnen Schlüssel lautet wie folgt:

SELECT thumbprint, * FROM master.sys.asymmetric_keys

Die Abfrage zum Abrufen des Fingerabdrucks jeder TDE-Datenbank lautet wie folgt:

SELECT DatabaseName(ddek.database_id) AS DatabaseName, ak.name
AS [Asymmetric key Name], ak.thumbprint FROM
sys.dm_database_encryption_keys ddek INNER JOIN
master.sys.asymmetric_keys ak ON
ak.thumbprint = ddek.encryptor_thumbprint

Ursache

In Version 1.0.5.0 von SQL Server Connector für Key Vault wurde ein Update eingeführt, das die Art und Weise ändert, wie das Programm Fingerabdrucke berechnet. In Version 1.0.5.0 entspricht diese Berechnung der Logik, die vom Programmmodul verwendet wird, um das folgende Migrationsszenario zu unterstützen:

Von: Lokales Microsoft SQL Server, das extensible Key Management (EKM) verwendet

To: Microsoft Azure SQL-Datenbank that uses Bring Your Own Key (BYOK) support for Transparent Data Encryption (TDE)

Aufgrund dieser Änderung treten möglicherweise Probleme auf, wenn Sie versuchen, Datenbanksicherungen von Version 1.0.4.0 oder einer früheren Version wiederherzustellen.

Lösung

  1. Kopieren Sie den SQL Server-Connector für Key Vault 1.0.4.0 oder eine frühere Version auf den sql2 Instanzserver.

  2. Führen Sie die folgende Abfrage auf dem sql2 Server aus, um die CRYPTOGRAPHIC PROVIDER Version 1.0.4.0 zu ändern:

    ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider
    FROM FILE =
    'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.4.0\Microsoft.AzureKeyVaultService.EKM.dll'
    
    1. Starten Sie SQL Server neu.

    2. Erstellen Sie einen neuen asymmetrischen Schlüssel mithilfe CRYPTOGRAPHIC PROVIDER von 1.0.4.0.

        CREATE ASYMMETRIC KEY TDE_KEY_1040 
        FROM PROVIDER AzureKeyVaultProvider 
        WITH PROVIDER_KEY_NAME = 'key1', 
        CREATION_DISPOSITION = OPEN_EXISTING
      
  3. Sie können das Vorhandensein beider asymmetrischer Schlüssel mithilfe der folgenden Abfrage bestätigen:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. Fügen Sie anmeldeinformationen zu asymmetrischem Schlüssel hinzu( TDE_Login im folgenden Beispiel), indem Sie eine Abfrage verwenden, die der folgenden Abfrage ähnelt:

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. Sie sollten jetzt in der Lage sein, die Sicherung wiederherzustellen.

  6. Führen Sie die folgende Abfrage sql2 aus, um die CRYPTOGRAPHIC PROVIDER Version 1.0.5.0 wiederhergestellt zu haben:

    ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider 
    FROM FILE =
    'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.5.0\Microsoft.AzureKeyVaultService.EKM.dll'
    
  7. Starten Sie SQL Server neu.

  8. Um den neuen Fingerabdruck zu verwenden, führen Sie die folgende Abfrage entweder mit demselben asymmetrischen Schlüssel oder dem neuen asymmetrischen Schlüssel aus.

    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>