Этот вопрос был вызван этим предыдущим сообщением, и моя база данных была сохранена для дальнейшего расследования, которое было восстановлено после:
BACKUP 'BrokenDatabase' detected an error on page (1:123456) in file ’BrokenDatabase.mdf'.
Error: 3043, Severity: 16, State: 1.
В связанном вопросе и резервной копии, которую я готов для исследований DBCC PAGE, DBCC CHECKDB прошел без ошибок, но очевидно, что имеется повреждение.
Какие типы коррупции могут возникнуть, когда CHECKDB пройдет, но BACKUP WITH CHECKSUM потерпит неудачу?
sql-server-2008
sql-server-2005
dbcc
corruption
Марк Стори-Смит
источник
источник
Ответы:
Ниже приводится подборка результатов, которые я прочитал. Вы найдете гораздо больше информации в связанных блогах и документах.
Во-первых, может случиться так, что
DBCC CHECKDB
вы не обнаружите несоответствия, если вы отключите проверку контрольной суммы или torn_page. Цитата из Пола Рэндала в этом посте :Вышеописанная ситуация может ударить вас, если вы обновили базу данных с SQL Server 2000 или более ранней версии до 2005 или более поздней. Затем вам нужно вручную включить контрольные суммы страниц с помощью ALTER DATABASE, чтобы они стали активными. Но затем вступает в силу второй абзац вышеприведенной цитаты, который может вас беспокоить.
BACKUP WITH CHECKSUM
обнаружит несоответствия контрольной суммы, но только если на страницу уже была записана контрольная сумма, когда выполняется резервное копирование. ОбычноDBCC CHECKDB
также обнаруживает эти ошибки, поэтому не рекомендуется использовать BACKUP WITH CHECKSUM для замены DBCC CHECKDB .Теперь есть вторая возможность
DBCC CHECKDB
не показывать какие-либо несоответствия, даже если они есть. Для этого я просто цитирую Пола Рэндала в « Заблуждениях о коррупции»: могут ли они исчезнуть? :У меня нет окончательного ответа на ваш вопрос, но, поскольку он
DBCC CHECKDB
проверяет только выделенные страницы, он не показывает несоответствия на освобожденных страницах. Единственная ситуация, которую я могу себе представить, заключается в том, что BACKUP также создает резервные копии тех освобожденных страниц, которые показывают потенциальные ошибки контрольной суммы, которые были пропущеныDBCC CHECKDB
.источник