Condividi tramite


MSSQLSERVER_15581

Si applica a: SQL Server

Dettagli

Attributo valore
Nome prodotto SQL Server
ID evento 15581
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico SEC_NODBMASTERKEYERR
Testo del messaggio Creare una chiave master nel database o aprire la chiave master nella sessione prima di eseguire questa operazione.

Spiegazione

L'errore 15581 viene generato quando SQL Server non è in grado di recuperare un database abilitato per Transparent Data Encryption (TDE). Viene registrato un messaggio di errore simile al seguente nel log degli errori di SQL Server

2020-01-14 22:16:26.47 spid20s Error: 15581, Severity: 16, State: 3.
2020-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.

Possibile causa

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

Use master
go
alter master key drop encryption by service master key

La chiave master del servizio viene usata per crittografare il certificato usato dalla chiave master del database. Qualsiasi tentativo di usare il database abilitato per TDE richiede l'accesso alla chiave master del database nel database master. Per aprire una chiave master non crittografata con la chiave master del servizio, è necessario usare l'istruzione OPEN MASTER KEY (Transact-SQL) insieme a una password per ogni sessione che richiede l'accesso alla chiave master. Poiché questo comando non può essere eseguito nelle sessioni di sistema, non è possibile completare il ripristino nei database abilitati per TDE.

Azione utente

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

Use master
go
open master key DECRYPTION BY PASSWORD = 'password'
alter master key add encryption by service master key

Usare la query seguente per determinare se la decrittografia automatica della chiave master con la 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 il valore 0, la decrittografia automatica della chiave master con la chiave master del servizio è stata disabilitata.

Ulteriori informazioni

In alcuni casi, l'istanza di SQL Server potrebbe non rispondere. Se si esegue una query sulla vista a gestione dinamica sys.dm_exec_requests, si noterà che il thread di LogWriter e gli altri thread che eseguono operazioni DML sono in attesa illimitata con wait_type WRITELOG. Anche altre sessioni potrebbero essere in attesa mentre tentano di ottenere blocchi.