Возможные ошибки носителей во время резервного копирования и восстановления (SQL Server)

Область применения: SQL Server

SQL Server предоставляет возможность восстановления базы данных, несмотря на обнаруженные ошибки. Новый важный механизм обнаружения ошибок состоит в возможном создании контрольной суммы резервной копии, которую можно создать операцией резервного копирования и проверить операцией восстановления. Можно управлять тем, будет ли операция проверять наличие ошибок и будет ли она останавливаться или продолжаться при обнаружении ошибки. Если резервная копия содержит контрольную сумму, инструкции RESTORE и RESTORE VERIFYONLY могут выполнять проверку на наличие ошибок.

Примечание.

Зеркальные резервные копии могут содержать до четырех копий (зеркал) наборов носителей, предоставляя другие копии для исправления ошибок, вызванных повреждением носителей. Дополнительные сведения см. в разделе "Зеркальные резервные носители" (SQL Server).

Контрольные суммы резервных копий

SQL Server поддерживает три типа контрольных сумм: контрольную сумму на страницах, контрольную сумму в блоках журналов и контрольную сумму резервной копии. При создании контрольной суммы резервной копии инструкция BACKUP проверяет согласованность данных, считанных из базы данных, со всеми контрольными суммами или признаками обрыва страниц в этой базе.

Инструкция BACKUP может также вычислять контрольную сумму резервной копии для потока резервирования. Если на данной странице есть контрольная сумма или данные о разрыве страниц, то при резервном копировании инструкция BACKUP также проверяет для страницы контрольную сумму, идентификатор и состояние разрыва страницы. При создании контрольной суммы резервной копии операция резервного копирования не добавляет никаких контрольных сумм к страницам. Страницы копируются так, как они существуют в базе данных, они не изменяются операцией резервного копирования.

Из-за дополнительной нагрузки при проверке и создании контрольных сумм резервных копий их использование может ухудшить производительность. Может пострадать как рабочая нагрузка, так и пропускная способность резервного копирования. Поэтому использование контрольных сумм резервных копий необязательно. При принятии решения о создании контрольных сумм резервных копий необходимо тщательно проконтролировать соответствующую дополнительную загрузку ЦП и влияние на остальную рабочую нагрузку системы.

Инструкция BACKUP никогда не изменяет исходную страницу на диске и ее содержимое.

Если контрольные суммы резервных копий включены, операция резервного копирования выполняет следующие шаги:

  1. Перед записью страницы на резервный носитель операция резервного копирования проверяет сведения на уровне страницы (контрольную сумму или обнаружение разрыва страницы), если они имеются. Если они отсутствуют, операция резервного копирования не может проверить страницу. Непроверенные страницы включаются «как есть», а их содержимое добавляется в общую контрольную сумму резервной копии.

    Если во время проверки операция резервного копирования обнаруживает ошибку страницы, резервное копирование прерывается с ошибкой.

    Примечание.

    Дополнительные сведения о контрольной сумме страниц и обнаружении разрывов страниц см. в описании параметра PAGE_VERIFY инструкции ALTER DATABASE. Дополнительные сведения см. в статье Параметры ALTER DATABASE SET (Transact-SQL).

  2. Независимо от того, присутствует ли контрольная сумма страницы или нет, инструкция BACKUP создает отдельные контрольные суммы резервных копий для потока резервных файлов. Дополнительно операции восстановления могут использовать контрольные суммы резервных копий для проверки наличия повреждений в резервных файлах. Контрольная сумма резервной копии хранится на носителе резервных файлов, а не на страницах базы данных. Контрольную сумму резервной копии также можно использовать во время восстановления.

  3. Резервный набор данных помечен как содержащий контрольные суммы резервных копий (в столбце has_backup_checksums таблицы msdb..backupset). Дополнительные сведения см. в разделе резервного набора данных (Transact-SQL).

Во время операции восстановления, если на резервном носителе имеются контрольные суммы, по умолчанию и инструкция RESTORE, и инструкция RESTORE VERIFYONLY проверяют контрольные суммы резервных копий и страниц. Если у резервной копии нет контрольной суммы, все операции восстановления продолжаются без проверок. Данное поведение объясняется тем, что без контрольной суммы резервной копии операция восстановления не может достоверно проверять контрольные суммы страниц.

Реакция на ошибки контрольной суммы страниц при операциях резервного копирования или восстановления

По умолчанию после обнаружения ошибки контрольной суммы страницы операция BACKUP или RESTORE прерывается, а операция RESTORE VERIFYONLY продолжает работу. Однако вы можете определить, будет ли та или иная операция прерываться при возникновении ошибки или пытаться продолжать работу.

Если операция BACKUP продолжает работу при возникновении ошибок, она производит следующие действия:

  1. Помечает резервный набор данных на резервном носителе как содержащий ошибки и отслеживает эту страницу в таблице suspect_pages в базе данных msdb . Дополнительные сведения см. в разделе suspect_pages (Transact-SQL).

  2. Записывает эту ошибку в журнал ошибок SQL Server.

  3. Помечает резервный набор данных как содержащий данный тип ошибок (в столбце is_damaged таблицы msdb.backupset). Дополнительные сведения см. в разделе резервного набора данных (Transact-SQL).

  4. Выдает сообщение о том, что резервная копия успешно создана, но содержит ошибки страниц.

Связанные задачи

Включение или отключение контрольных сумм резервных копий

Управление реакцией на ошибку во время операции резервного копирования

См. также

ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL)
backupset (Transact-SQL)
Зеркальные наборы носителей резервных копий (SQL Server)
RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL).