Essa pergunta foi solicitada por essa postagem anterior e por eu ter um banco de dados arquivado para investigação futura restaurada a seguir:
BACKUP 'BrokenDatabase' detected an error on page (1:123456) in file ’BrokenDatabase.mdf'.
Error: 3043, Severity: 16, State: 1.
Na pergunta vinculada e no backup que eu estou pronto para investigações de DBCC PAGE, o DBCC CHECKDB passou sem erros, mas a corrupção está evidentemente presente.
Que tipos de corrupção podem ocorrer pelos quais o CHECKDB passará, mas um BACKUP WITH CHECKSUM falhará?
sql-server-2008
sql-server-2005
dbcc
corruption
Mark Storey-Smith
fonte
fonte
Respostas:
A seguir, é apresentada uma compilação de resultados que eu li. Você encontrará muito mais informações nos blogs e documentos vinculados.
Primeiro, pode acontecer que
DBCC CHECKDB
não detecte inconsistências se você desativar a verificação de soma de verificação ou página rasgada. Uma citação de Paul Randal neste post :A situação acima pode afetar você, se você atualizou um banco de dados do SQL Server 2000 ou anterior para 2005 ou posterior. Você precisa ativar manualmente as somas de verificação de página com o ALTER DATABASE para ativá-las. Mas o segundo parágrafo da citação acima entra em ação e pode incomodá-lo.
BACKUP WITH CHECKSUM
detectará inconsistências da soma de verificação, mas apenas se a página já tiver uma soma de verificação gravada, quando estiver sendo copiada. Normalmente,DBCC CHECKDB
também detecta esses erros, portanto, não é uma boa ideia usar BACKUP WITH CHECKSUM para substituir o DBCC CHECKDB .Agora há uma segunda possibilidade de
DBCC CHECKDB
não mostrar inconsistências, mesmo que existam. Por isso, estou apenas citando novamente Paul Randal em Equívocos sobre corrupções: elas podem desaparecer? :Não tenho uma resposta final para sua pergunta, mas como
DBCC CHECKDB
apenas verifica as páginas alocadas, ela não mostra inconsistências nas páginas desalocadas. A única situação que posso imaginar agora é que o BACKUP também faz backup das páginas desalocadas, mostrando possíveis erros de soma de verificação ignoradosDBCC CHECKDB
.fonte