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
Kopieren Sie den SQL Server-Connector für Key Vault 1.0.4.0 oder eine frühere Version auf den
sql2
Instanzserver.Führen Sie die folgende Abfrage auf dem
sql2
Server aus, um dieCRYPTOGRAPHIC 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'
Starten Sie SQL Server neu.
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
Sie können das Vorhandensein beider asymmetrischer Schlüssel mithilfe der folgenden Abfrage bestätigen:
SELECT thumbprint,* FROM master.sys.asymmetric_keys
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;
Sie sollten jetzt in der Lage sein, die Sicherung wiederherzustellen.
Führen Sie die folgende Abfrage
sql2
aus, um dieCRYPTOGRAPHIC 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'
Starten Sie SQL Server neu.
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>