Un database abilitato per TDE potrebbe non essere ripristinato in SQL Server

Questo articolo consente di risolvere il problema per cui un database abilitato per TDE potrebbe non essere ripristinato quando viene rimossa la crittografia automatica della chiave master tramite la chiave master del servizio (SMK).

Si applica a: SQL Server 2008 Enterprise, SQL Server 2008 R2 Enterprise
Numero KB originale: 2666213

Sintomi

In Microsoft SQL Server 2008 e in Microsoft SQL Server 2008 R2, un database abilitato per la crittografia del database trasparente potrebbe non essere ripristinato. Inoltre, il messaggio di errore seguente potrebbe essere registrato nel log degli errori SQL Server:

2012-01-14 22:16:26.47 spid20s Errore: 15581, Gravità: 16, Stato: 3.
2012-01-14 22:16:26.47 spid20s Creare una chiave master nel database o aprire la chiave master nella sessione prima di eseguire questa operazione.

Causa

Questo problema si verifica quando la crittografia della chiave master del servizio per la chiave master del database master viene rimossa quando viene eseguito il comando seguente:

USE MASTER
GO
ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY

Quando una chiave master del database (DMK) viene creata per la prima volta, viene crittografata automaticamente con SMK.

La chiave master del database viene usata per crittografare il certificato usato dalla funzionalità Transparent Database Encryption. Qualsiasi tentativo di usare il database abilitato per TDE richiede l'accesso al certificato e alla chiave master del database nel database master. Nella configurazione predefinita, la DMK viene aperta in modo implicito da SMK. Una chiave master non crittografata dalla chiave master del servizio deve essere aperta in modo esplicito usando l'istruzione OPEN MASTER KEY insieme a una password in ogni sessione che richiede l'accesso alla chiave master.

Il ripristino del database si verifica nelle sessioni di sistema. Se queste sessioni non possono aprire il certificato e la DMK, il ripristino non può essere completato in un database abilitato per TDE se la decrittografia automatica di DMK da parte di SMK viene rimossa. In questo scenario, il database è contrassegnato come Ripristino in sospeso.

Risoluzione

Per risolvere il problema, abilitare la decrittografia automatica della chiave master. A tale scopo, eseguire i seguenti comandi:

USE MASTER
GO
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY

Portare offline il database e portarlo online usando il ALTER DATABASE <databasename> SET ONLINE comando .

Utilizzare la query seguente per determinare se la decrittografia automatica della chiave master da parte della chiave master del servizio è stata disabilitata per il database master:

SELECT is_master_key_encrypted_by_server FROM sys.databases WHERE NAME = 'master'

Se questa query restituisce un valore pari a 0, la decrittografia automatica della chiave master da parte della chiave master del servizio è stata disabilitata.