Estou tentando restaurar o backup do banco de dados que tem Transparent Data Encryption habilitado. Verifiquei que a impressão digital do certificado no arquivo de backup é a mesma do certificado TDE no banco de dados [mestre].
Certificado TDE:
No entanto, a restauração está falhando com o erro:
Está solicitando o certificado antigo. Observe que alteramos o certificado TDE há algum tempo e a chave mestra do banco de dados foi criptografada com o novo certificado usando o comando alter database:
USE [db];
GO
ALTER DATABASE ENCRYPTION KEY
ENCRYPTION BY SERVER CERTIFICATE [New_Certificate];
GO
O certificado antigo ainda estava no banco de dados [mestre] quando o backup foi feito e foi removido algum tempo depois.
Isso parece um bug.
Alguma explicação, sugestão?
versão: Microsoft SQL Server 2016 (SP3-OD) (KB5006943) - 13.0.6404.1 (X64)
[EDIT1]:
Eu restaurei o certificado "antigo" do backup e a restauração do banco de dados foi bem-sucedida. Verifiquei o status da criptografia - o banco de dados foi protegido com o certificado "novo" conforme o esperado e descartei o certificado "antigo":
Mas então o mesmo erro aparece com o backup do banco de dados - solicitando o certificado "antigo" novamente:
[EDIT2]:
Eu descriptografei o banco de dados e criptografei novamente. A descriptografia foi bem-sucedida apenas na segunda tentativa:
Parece que o problema foi causado por alguns registros de log de transações criptografados com o certificado "antigo" e descartado. Não consegui truncar o log de transações até descriptografar e criptografar novamente o banco de dados. Presumo que isso seja um bug, porque o SQL Server não deve permitir descartar um certificado se ainda estiver sendo usado em qualquer lugar.