Sintoma:

Ao usar DBCC CHECKDB com REPAIR_ALLOW_DATA_LOSS parâmetro para reparar um banco de dados .MDF corrompido, como este:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

você vê a seguinte mensagem de erro:

Resultados de DBCC para 'xxxx'.
CHECKDB encontrou 0 erros de alocação e 0 erros de consistência no banco de dados 'xxxx'.
Msg 824, nível 24, estado 2, linha 8
SQL Server detectou um erro de E / S baseado em consistência lógica: soma de verificação incorreta (esperado: 0xea8a9a2f; real: 0x37adbff8). Ocorreu durante uma leitura da página (1:28) no banco de dados ID 39 no deslocamento 0x00000000038000 no arquivo 'xxxx.mdf'. Mensagens adicionais no SQL Server o log de erros ou o log de eventos do sistema podem fornecer mais detalhes. Esta é uma condição de erro grave que ameaça a integridade do banco de dados e deve ser corrigida imediatamente. Conclua uma verificação completa de consistência do banco de dados (DBCC CHECKDB). Esse erro pode ser causado por vários fatores; Para mais informações, veja SQL Server Livros online.

onde 'xxxx.mdf' é o nome do arquivo MDF corrompido que está sendo reparado. Embora CHECKDB diga

CHECKDB encontrou 0 erros de alocação e 0 erros de consistência no banco de dados 'xxxx'.

Este ainda é um erro de consistência (Msg 824) no banco de dados.

Captura de tela da mensagem de erro:

erro de E / S baseado em consistência lógica: soma de verificação incorreta

Se a corrupção for grave, haverá mensagens de erro contínuas (Msg 824), como abaixo:

Msg 824, nível 24, estado 6, linha 2 SQL Server detectou um erro de E / S baseado em consistência lógica: soma de verificação incorreta (esperado: 0x3d17dfef; real: 0xd81748ef). Ocorreu durante uma leitura da página (1: 0) no banco de dados ID 39 no deslocamento 0000000000000000 no arquivo 'xxxx.mdf'. Mensagens adicionais no SQL Server o log de erros ou o log de eventos do sistema podem fornecer mais detalhes. Esta é uma condição de erro grave que ameaça a integridade do banco de dados e deve ser corrigida imediatamente. Conclua uma verificação completa de consistência do banco de dados (DBCC CHECKDB). Esse erro pode ser causado por vários fatores; Para mais informações, veja SQL Server Livros online.

Msg 824, nível 24, estado 6, linha 4 SQL Server detectou um erro de E / S baseado em consistência lógica: soma de verificação incorreta (esperado: 0x3d17dfef; real: 0xd81748ef). Ocorreu durante uma leitura da página (1: 0) no banco de dados ID 39 no deslocamento 0000000000000000 no arquivo 'xxxx.mdf'. Mensagens adicionais no SQL Server o log de erros ou o log de eventos do sistema podem fornecer mais detalhes. Esta é uma condição de erro grave que ameaça a integridade do banco de dados e deve ser corrigida imediatamente. Conclua uma verificação completa de consistência do banco de dados (DBCC CHECKDB). Esse erro pode ser causado por vários fatores; Para mais informações, veja SQL Server Livros online.

onde 'xxxx.mdf' é o nome do arquivo MDF corrompido que está sendo reparado.

Captura de tela da mensagem de erro:

Se a corrupção for mais grave, você pode ver Msg 7909 segue Msg 824:

Resultados de DBCC para 'xxxx'.
CHECKDB encontrou 0 erros de alocação e 0 erros de consistência no banco de dados 'xxxx'.
Msg 824, nível 24, estado 2, linha 8
SQL Server detectou um erro de E / S baseado em consistência lógica: soma de verificação incorreta (esperado: 0xcfcd2118; real: 0x6fc599d6). Ocorreu durante uma leitura da página (1: 1) no banco de dados ID 39 no deslocamento 0x00000000002000 no arquivo 'xxxx.mdf'. Mensagens adicionais no SQL Server o log de erros ou o log de eventos do sistema podem fornecer mais detalhes. Esta é uma condição de erro grave que ameaça a integridade do banco de dados e deve ser corrigida imediatamente. Conclua uma verificação completa de consistência do banco de dados (DBCC CHECKDB). Esse erro pode ser causado por vários fatores; Para mais informações, veja SQL Server Livros online.
Msg 7909, nível 20, estado 1, linha 8
O reparo do modo de emergência falhou. Você deve restaurar do backup.

onde 'xxxx' é o nome do banco de dados e 'xxxx.mdf' é o nome do arquivo físico do banco de dados.

Importante Msg 7909 é um erro grave que pode ocorrer em muitas situações sempre que SQL Server acho que o banco de dados está além da recuperação.

Captura de tela da mensagem de erro:

em branco

Explicação precisa:

Os dados no arquivo MDF são armazenados como 8 KB páginas. Cada página possui um campo opcional de soma de verificação.

Se o comando DBCC CHECKDB encontrar os valores de soma de verificação na página de cabeçalho, a página PFS e algumas das páginas de dados forem inválidas e não puder corrigir o problema, ele relatará este erro (Msg 824) Se a corrupção for grave, pode haver erros contínuos (Msg 824) ou seguido por outro erro (Msg 7909).

Você pode usar nosso produto DataNumen SQL Recovery para recuperar os dados do arquivo MDF corrompido e resolver esse erro.

Arquivos de amostra:

Amostra de arquivos MDF corrompidos que causarão o erro (Erro de mensagem única 824):

SQL Server versão Arquivo MDF corrompido Arquivo MDF corrigido por DataNumen SQL Recovery
SQL Server 2014 Error1_3.mdf Error1_3_fixed.mdf

Amostra de arquivos MDF corrompidos que causarão o erro (Erros contínuos de mensagem 824):

SQL Server versão Arquivo MDF corrompido Arquivo MDF corrigido por DataNumen SQL Recovery
SQL Server 2014 Error1_1.mdf Error1_1_fixed.mdf

Amostra de arquivos MDF corrompidos que causarão o erro (Erro de mensagem 824 seguido de erro de mensagem 7909):

SQL Server versão Arquivo MDF corrompido Arquivo MDF corrigido por DataNumen SQL Recovery
SQL Server 2014 Error1_2.mdf Error1_2_fixed.mdf

 

Referências:

1. https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-824-database-engine-error?view=sql-server-ver15