Dela via


Fel 33111 vid återställning av säkerhetskopior från äldre versioner av SQL Server Connector för Microsoft Azure Key Vault

Ursprungligt KB-nummer: 4470999

I den här artikeln beskrivs ett fel som uppstår när du försöker återställa en transparent datakryptering (TDE) säkerhetskopia som görs på servrar som använder äldre versioner av SQL Server Connector för Microsoft Azure Key Vault.

Symptom

Du får problem när du försöker återställa en databassäkerhetskopia från SQL Server som använder SQL Server Connector för Key Vault 1.0.4.0 eller en tidigare version till SQL Server-anslutning för Microsoft Azure Key Vault 1.0.5.0.

Anta att du distribuerar följande instanser av Microsoft SQL Server:

  • SQL Server-instansen sql1 har SQL Server Connector för Key Vault 1.0.4.0 distribuerat.

  • SQL Server-instansen sql2 har SQL Server Connector för Key Vault 1.0.5.0 distribuerat.

  • Använd följande fråga för att distribuera en asymmetrisk nyckel på både sql1 och sql2 instanser från samma asymmetriska nyckelkälla i Key Vault:

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

Om du granskar värdet för tumavtryck på båda servrarna ser du att tumavtryckslängderna skiljer sig åt även om de skapas från samma källa. Tumavtrycket version 1.0.5.0 är längre än version 1.0.4.0.

Exempel på tumavtryck 1.0.4.0:

0x2C5677D76F76D77F80

Exempel på tumavtryck 1.0.5.0:

0x373B314B78E8D59A0925494558FEF14B726216C5

Ändringen orsakar problem under säkerhetskopierings- och återställningsåtgärder.

Exempel:

Du har en databassäkerhetskopia som krypteras av en asymmetrisk nyckel i Key Vault i instansen sql1 .

Instansen sql2 har en asymmetrisk nyckel skapad.

Om du försöker återställa säkerhetskopian på instansen sql2 misslyckas åtgärden och returnerar ett felmeddelande som liknar följande meddelande:

Msg 33111, nivå 16, delstat 4, radnummer <>

Det går inte att hitta serverasymmetrisk nyckel med tumavtrycket "0x2C5677D76F76D77F80".

Anteckningar:

Frågan för att hämta tumavtrycket för varje nyckel är följande:

SELECT thumbprint, * FROM master.sys.asymmetric_keys

Frågan för att hämta tumavtrycket för varje TDE-databas är följande:

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

Orsak

En uppdatering introducerades i version 1.0.5.0 av SQL Server Connector för Key Vault som ändrar hur programmet beräknar tumavtryck. I version 1.0.5.0 matchar den här beräkningen logiken som används av programmotorn för att stödja följande migreringsscenario:

Från: Lokal Microsoft SQL Server som använder Extensible Key Management (EKM)

Till: Microsoft Azure SQL Database som använder BYOK-stöd (Bring Your Own Key) för transparent datakryptering (TDE)

På grund av den här ändringen kan det uppstå problem när du försöker återställa databassäkerhetskopior från version 1.0.4.0 eller en tidigare version.

Åtgärd

  1. Kopiera SQL Server Connector för Key Vault 1.0.4.0 eller en tidigare version till sql2 instansservern.

  2. Kör följande fråga på sql2 servern för att ändra CRYPTOGRAPHIC PROVIDER till version 1.0.4.0:

    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. Starta om SQL Server.

    2. Skapa en ny asymmetrisk nyckel med hjälp CRYPTOGRAPHIC PROVIDER av 1.0.4.0.

        CREATE ASYMMETRIC KEY TDE_KEY_1040 
        FROM PROVIDER AzureKeyVaultProvider 
        WITH PROVIDER_KEY_NAME = 'key1', 
        CREATION_DISPOSITION = OPEN_EXISTING
      
  3. Du kan bekräfta att båda de asymmetriska nycklarna finns med hjälp av följande fråga:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. Lägg till autentiseringsuppgifter till mappad inloggning med asymmetrisk nyckel (TDE_Login i följande exempel) med hjälp av en fråga som liknar följande fråga:

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. Du bör nu kunna återställa säkerhetskopian.

  6. Kör följande fråga på sql2 för att återställa CRYPTOGRAPHIC PROVIDER till version 1.0.5.0:

    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. Starta om SQL Server.

  8. Om du vill använda det nya tumavtrycket kör du följande fråga med hjälp av antingen samma asymmetriska nyckel eller den nya versionens asymmetriska nyckel.

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