MSSQLSERVER_15581
Applies to: SQL Server
Attribute | Value |
---|---|
Product Name | SQL Server |
Event ID | 15581 |
Event Source | MSSQLSERVER |
Component | SQLEngine |
Symbolic Name | SEC_NODBMASTERKEYERR |
Message Text | Please create a master key in the database or open the master key in the session before performing this operation. |
Error 15581 is raised when SQL Server is not able to recover a database that is enabled for transparent data encryption (TDE). An error message like the following is logged in the SQL Server error log
2020-01-14 22:16:26.47 spid20s Error: 15581, Severity: 16, State: 3.
2020-01-14 22:16:26.47 spid20s Please create a master key in the database or open the master key in the session before performing this operation.
This issue occurs when service master key encryption for the database master key in the master database is removed when the following command is run:
Use master
go
alter master key drop encryption by service master key
The service master key is used to encrypt the certificate that is used by the database master key. Any attempt to use the TDE-enabled database requires access to the database master key in the master database. A master key that is not encrypted by the service master key must be opened by using the OPEN MASTER KEY (Transact-SQL) statement together with a password on each session that requires access to the master key. Because this command cannot be run on system sessions, recovery cannot be completed on TDE-enabled databases.
To resolve the issue, enable automatic decryption of the master key. To do this, run the following commands:
Use master
go
open master key DECRYPTION BY PASSWORD = 'password'
alter master key add encryption by service master key
Use the following query to determine whether automatic decryption of the master key by the service master key was disabled for the master database:
select is_master_key_encrypted_by_server from sys.databases where name = 'master'
If this query returns a value of 0, automatic decryption of the master key by the service master key was disabled.
In some cases, the instance of SQL Server may appear unresponsive. If you query sys.dm_exec_requests
dynamic management view, you notice that the LogWriter
thread and other threads that are performing DML operations are waiting indefinitely with WRITELOG wait_type. Other sessions may also be waiting while they try to obtain locks.