Sintomas
No Microsoft SQL Server 2019, restaurar a base de dados comprimida ou registar cópias de segurança das bases de dados com encriptação de dados transparente (TDE) ativada pode causar o seguinte erro:
Msg 3241, Nível 16, Estado 18, Linha <Número>
A família de multimédia no dispositivo <nome de ficheiro de cópia de segurança>" está formada incorretamente. O SQL Server não consegue processar esta família de multimédia.
Solução
Para resolver este problema, não comprime as cópias de segurança de bases de dados ativadas por TDE através dos seguintes métodos:
-
Utilize WITH COMPRESSION conforme descrito em BACKUP (Transact-SQL).
-
Confie na predefinição de compressão de cópias de segurança conforme descrito em Ver ou Configurar a Opção de Configuração do Servidor predefinida de compressão de cópia de segurança.
Resolução
Informações de atualização cumulativas
Este problema foi corrigido na seguinte atualização cumulativa para o SQL Server:
Atualização Cumulativa 16 para o SQL Server 2019
Note Tem de criar as cópias de segurança juntamente com esta correção para evitar o problema. Instalar a CU corrigida na instância de destino e tentar restaurar a mesma cópia de segurança criada sem a correção não irá funcionar.
Mais informações
Importante: A partir do SQL Server 2019 CU16, a criação de cópias de segurança comprimida (base de dados ou registo) de bases de dados ativadas por TDE irá utilizar um novo formato de cópia de segurança que só pode ser restaurado numa instância que tenha o CU16 ou posterior instalado.
O restauro de uma cópia de segurança comprimida de uma base de dados ativada para TDE que foi criada no CU16 ou posterior numa instância do SQL Server 2019 da versão CU15 ou anterior falha e causa os seguintes erros:
-
RESTAURAR BASE DE DADOS
Msg 3013, Nível 16, Estado 1, Linha <Número>
A cláusula RESTAURAR BASE DE DADOS termina anormalmente.
Msg 9004, Nível 21, Estado 1, Linha <Número>
Ocorreu um erro ao processar o registo da base de dados "TDE_DB". Se possível, restaure a partir da cópia de segurança. Se não estiver disponível uma cópia de segurança, poderá ser necessário recriar o registo.
-
RESTAURAR REGISTO
Localização: mediaRead.cpp:1018
Expressão: ler <= m_Demand
SPID: 84
ID do Processo: ProcessID
Msg 3013, Nível 16, Estado 1, Linha <Número>
A cláusula RESTAURAR REGISTO está a terminar anormalmente.
Msg 3624, Nível 20, Estado 1, Linha <Número>
A verificação de asserção do sistema falhou. Verifique se o registo de erros do SQL Server é mais detalhes. Normalmente, uma falha de asserção é causada por um erro de software ou danos de dados. Para verificar a corrupção de bases de dados, considere executar a verificação DBCC CHECKDB. Se tiver concordado em enviar dados para a Microsoft durante a configuração, será enviada uma mini-ins versão para a Microsoft. Poderá estar disponível uma atualização da Microsoft no Service Pack mais recente ou numa Hotfix a partir do Suporte Técnico.
Note RESTAURAR CABEÇALHO APENAS E RESTAURAR FILELISTONLY não são afetados pelo problema e funcionarão em todos os casos.
RESTAURAR VERIFICARONLY pode devolver com êxito para uma cópia de segurança COMPLETA que seja inválida conforme descrito acima: não depender de RESTAURAR VERIFICAÇÃOONLY para estabelecer que a cópia de segurança pode ser restaurada sem atingir o problema acima. A ação RESTAURAR VERIFICAÇÃO APENAS numa cópia de segurança de registo irá normalmente falhar juntamente com o mesmo erro que um REGISTO RESTAURAR real descrito acima.
Por conseguinte, é importante certificar-se de que, num contexto em que a Compressão de Cópia de Segurança e TDE pode ser ativada, todas as instâncias do SQL Server 2019 que consomem cópias de segurança de outras instâncias do SQL Server 2019 recebem CU16 (ou posterior) antes das instâncias que geram o material de cópia de segurança. As arquiteturas de envio de registos seriam um exemplo principal dessa situação: atualizar instâncias secundárias primeiro.
Depois de criar uma cópia de segurança do registo de transações com compressão, normalmente não é possível recriá-la sem compressão. Por conseguinte, atualizar o servidor principal de Envio de Registos para o SQL Server 2019 CU16 ou posterior nesse contexto iria interromper as tarefas de restauro até que o servidor secundário também seja atualizado.
Uma cópia de segurança descomprimida de uma base de dados com capacidade para TDE, uma cópia de segurança comprimida de uma base de dados que não está ativada para a TDE ou uma cópia de segurança descomprimida de uma base de dados que não esteja ativada para a TDE não irá utilizar o novo formato de cópia de segurança introduzido no CU16 e pode ser restaurado numa instância do SQL Server 2019 de quaisquer versões.
Por conseguinte, é necessário desativar a compressão da cópia de segurança se planear restaurar um material de base de dados ativado para TDE (cópia de segurança completa ou cópia de segurança do registo de transações) para qualquer instância do SQL Server de versões anteriores antes do SQL Server 2019 CU16.
Cada nova atualização cumulativa para o SQL Server contém todas as correções de segurança e correções de segurança que estavam na com atualização anterior. Recomendamos que instale a comtrução mais recente para a sua versão do SQL Server:
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever atualizações de software.