MSSQLSERVER_15581

Van toepassing op:SQL Server

Details

Attribute Value
Productnaam SQL Server
Gebeurtenis-id 15581
Bron van gebeurtenis MSSQLSERVER
Onderdeel SQLEngine
Symbolische naam SEC_NODBMASTERKEYERR
Berichttekst Maak een hoofdsleutel in de database of open de hoofdsleutel in de sessie voordat u deze bewerking uitvoert.

Explanation

Fout 15581 wordt geactiveerd wanneer SQL Server een database niet kan herstellen die is ingeschakeld voor transparante data-encryptie (TDE). Een foutmelding zoals de volgende wordt gelogd in het SQL Server foutlogboek

2020-01-14 22:16:26.47 spid20s Fout: 15581, ernst: 16, staat: 3.
2020-01-14 22:16:26.47 spid20s Maak alsjeblieft een hoofdsleutel aan in de database of open de hoofdsleutel in de sessie voordat je deze bewerking uitvoert.

Mogelijke oorzaak

Dit probleem doet zich voor wanneer de versleuteling van de master key van de database in de masterdatabase wordt verwijderd wanneer het volgende commando wordt uitgevoerd:

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

De service-hoofdsleutel wordt gebruikt om het certificaat te versleutelen dat door de database-hoofdsleutel wordt gebruikt. Elke poging om de TDE-geschikte database te gebruiken vereist toegang tot de database-hoofdsleutel in de hoofddatabase. Een hoofdsleutel die niet door de diensthoofdsleutel is versleuteld, moet worden geopend met behulp van de OPEN MASTER KEY (Transact-SQL) -instructie samen met een wachtwoord voor elke sessie die toegang tot de hoofdsleutel vereist. Omdat dit commando niet op systeemsessies kan worden uitgevoerd, kan herstel niet worden uitgevoerd op TDE-geschikte databases.

Gebruikersactie

Om het probleem op te lossen, schakel automatische ontsleuteling van de hoofdsleutel in. Gebruik hiervoor de volgende opdrachten:

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

Gebruik de volgende query om te bepalen of automatische ontsleuteling van de hoofdsleutel door de servicehoofdsleutel is uitgeschakeld voor de hoofddatabase:

select is_master_key_encrypted_by_server from sys.databases where name = 'master'

Als deze query een waarde van 0 teruggeeft, werd de automatische ontsleuteling van de hoofdsleutel door de servicehoofdsleutel uitgeschakeld.

Meer informatie

In sommige gevallen kan de instantie van SQL Server niet reageren. Als je een query in de dynamische beheerweergave zoekt sys.dm_exec_requests , merk je dat de LogWriter thread en andere threads die DML-operaties uitvoeren onbeperkt wachten met WRITELOG wait_type. Andere sessies kunnen ook wachten terwijl ze proberen sloten te krijgen.