MSSQLSERVER_15581

Aplica-se a: SQL Server

Details

Attribute Valor
Nome do Produto SQL Server
ID do Evento 15581
Origem do evento MSSQLSERVER
Componente SQLEngine
Nome simbólico SEC_NODBMASTERKEYERR
Texto da mensagem Crie uma chave mestra no banco de dados ou abra a chave mestra na sessão antes de executar esta operação.

Explanation

O erro 15581 surge quando o SQL Server não consegue recuperar uma base de dados que está ativada para encriptação de dados transparentes (TDE). Uma mensagem de erro como a seguinte está registada no registo de erros do SQL Server

2020-01-14 22:16:26.47 spid20s Erro: 15581, Gravidade: 16, Estado: 3.
2020-01-14 22:16:26.47 spid20s Por favor, crie uma chave mestra na base de dados ou abra a chave mestra na sessão antes de realizar esta operação.

Causa possível

Este problema ocorre quando a encriptação da chave mestra de serviço para a chave mestra da base de dados na base de dados mestre é removida quando o seguinte comando é executado:

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

A chave mestra de serviço é usada para encriptar o certificado utilizado pela chave mestra da base de dados. Qualquer tentativa de usar a base de dados habilitada para TDE requer acesso à chave mestra da base de dados na base de datos principal. Uma chave mestra que não é encriptada pela chave mestra de serviço deve ser aberta usando a OPEN MASTER KEY instrução (Transact-SQL) juntamente com uma palavra-passe em cada sessão que exija acesso à chave mestra. Como este comando não pode ser executado em sessões do sistema, a recuperação não pode ser realizada em bases de dados habilitadas para TDE.

Ação do usuário

Para resolver o problema, ative a desencriptação automática da chave mestra. Para isso, execute os seguintes comandos:

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

Use a seguinte consulta para determinar se a desencriptação automática da chave mestra pela chave mestra de serviço foi desativada para a base de dados mestre:

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

Se esta consulta devolver um valor de 0, a desencriptação automática da chave mestra pela chave mestra de serviço foi desativada.

Mais informações

Em alguns casos, a instância do SQL Server pode parecer não responsiva. Se consultares sys.dm_exec_requests a vista de gestão dinâmica, reparas que o LogWriter thread e outros threads que estão a realizar operações DML estão à espera indefinidamente com o WRITELOG wait_type. Outras sessões também podem estar à espera enquanto tentam obter fechaduras.