Обнаружение и устранение ошибок носителей
Microsoft SQL Server 2005 предоставляет улучшенную систему обнаружения ошибок и позволяет восстановить базу данных по журналу, несмотря на обнаружение ошибок. Новый важный механизм обнаружения ошибок состоит в возможном создании контрольной суммы резервной копии, которую можно создать операцией резервного копирования и проверить операцией восстановления. Можно управлять тем, будет ли операция проверять наличие ошибок и будет ли она останавливаться или продолжаться при обнаружении ошибки. Если резервная копия содержит контрольную сумму, инструкции RESTORE и RESTORE VERIFYONLY могут выполнять проверку на наличие ошибок.
Примечание. |
---|
SQL Server 2005 также вводит поддержку зеркальных носителей резервных копий. Зеркальные резервные копии могут содержать до четырех копий (зеркал) наборов носителей, предоставляя другие копии для исправления ошибок, вызванных повреждением носителей. Дополнительные сведения см. в разделе Использование зеркальных наборов резервных носителей. |
Контрольные суммы при операции BACKUP
В SQL Server существует три типа контрольных сумм: контрольная сумма страны, контрольная сумма блока журнала и контрольная сумма резервной копии. При создании контрольной суммы резервной копии инструкция BACKUP проверяет согласованность данных, считанных из базы данных, со всеми контрольными суммами или признаками обрыва страниц в этой базе.
Инструкция BACKUP может также вычислять контрольную сумму резервной копии для потока резервирования. Если на данной странице есть контрольная сумма или данные о разрыве страниц, то при резервном копировании инструкция BACKUP также проверяет для страницы контрольную сумму, идентификатор и состояние разрыва страницы. При создании контрольной суммы резервной копии операция резервного копирования не добавляет никаких контрольных сумм к страницам. Страницы копируются так, как они существуют в базе данных, они не изменяются операцией резервного копирования. Из-за дополнительной нагрузки при проверке и создании контрольных сумм резервных копий их использование может ухудшить производительность. Может пострадать как рабочая нагрузка, так и пропускная способность резервного копирования. Поэтому использование контрольных сумм резервных копий необязательно. При принятии решения о создании контрольных сумм резервных копий необходимо тщательно проконтролировать соответствующую дополнительную загрузку ЦП и влияние на остальную рабочую нагрузку системы.
Примечание. |
---|
Инструкция BACKUP никогда не изменяет исходную страницу на диске и ее содержимое. |
Следующие параметры инструкции BACKUP управляют поведением контрольной суммы резервной копии.
- CHECKSUM
Если этот режим задействован, он требует от операции резервного копирования проверки на каждой странице контрольной суммы и наличия разрывов, а также создания контрольной суммы для всей резервной копии.
Если запрошена проверка контрольной суммы при операции резервного копирования.- Перед записью страницы на резервный носитель инструкция BACKUP проверяет сведения на уровне страницы (контрольную сумму или обнаружение разрыва страницы), если они существуют. Если таких сведений нет, операция резервного копирования не может проверить страницу; страница включается такой, как она есть, и ее содержимое добавляется к общей контрольной сумме резервной копии.
Примечание. Дополнительные сведения о контрольной сумме страниц и обнаружении разрывов страниц см. в описании параметра PAGE_VERIFY инструкции ALTER DATABASE. Дополнительные сведения см. в разделе ALTER DATABASE (Transact-SQL). - Для возможного использования во время восстановления операция резервного копирования создает отдельную контрольную сумму резервной копии (контрольная сумма резервной копии) и записывает ее на резервный носитель вне зависимости от наличия контрольных сумм страниц.
- Резервный набор данных помечен как содержащий контрольные суммы резервных копий (в столбце has_backup_checksums таблицы msdb..backupset). Дополнительные сведения см. в разделе backupset (Transact-SQL).
Примечание. Для резервных копий журнала транзакций создаются и проверяются контрольные суммы резервных копий. - Перед записью страницы на резервный носитель инструкция BACKUP проверяет сведения на уровне страницы (контрольную сумму или обнаружение разрыва страницы), если они существуют. Если таких сведений нет, операция резервного копирования не может проверить страницу; страница включается такой, как она есть, и ее содержимое добавляется к общей контрольной сумме резервной копии.
- NO_CHECKSUM
Явно отключает проверку страниц и создание контрольных сумм резервных копий. (Это характер действия по умолчанию.)
Управление реакцией на ошибки
Если задан параметр CHECKSUMS и инструкция BACKUP обнаруживает при проверке ошибку страницы, резервное копирование приводит к ошибке. Данное поведение управляется следующими параметрами инструкции BACKUP.
- CONTINUE_AFTER_ERROR
Инструкция BACKUP будет продолжать работу, несмотря на обнаружение неверной контрольной суммы резервной копии. В этом случае инструкция BACKUP выполняет следующие действия.
Помечает резервный набор данных на резервном носителе как содержащий ошибки и отслеживает эту страницу в таблице suspect_pages в базе данных msdb. Дополнительные сведения см. в разделе suspect_pages (Transact-SQL).- Записывает эту ошибку в журнал ошибок SQL Server.
- Помечает резервный набор данных как содержащий данный тип ошибок (в столбце is_damaged таблицы msdb.backupset). Дополнительные сведения см. в разделе backupset (Transact-SQL).
- Выдает сообщение о том, что резервная копия успешно создана, но содержит ошибки страниц.
- STOP_ON_ERROR
Указывает на неудачное выполнение инструкции BACKUP, если проверка контрольной суммы выдает отрицательный результат. (Это характер действия по умолчанию.)
Контрольные суммы при операциях RESTORE и RESTORE VERIFYONLY
Если на резервном носителе есть контрольные суммы, то по умолчанию и операция RESTORE, и операция RESTORE VERIFYONLY проверяют контрольные суммы резервных копий и страниц. Если у резервной копии нет контрольной суммы, все операции восстановления продолжаются без проверок. Данное поведение объясняется тем, что без контрольной суммы резервной копии операция восстановления не может достоверно проверять контрольные суммы страниц.
Два параметра, CHECKSUM и NO_CHECKSUM, позволяют изменить поведение операций RESTORE и RESTORE VERIFYONLY при проверке контрольных сумм.
- CHECKSUM
Если явно запрашивается CHECKSUM для операции восстановления и если резервная копия содержит контрольные суммы, то проверяются контрольные суммы и резервной копии, и страниц, как в случае по умолчанию. Однако если в резервном наборе данных нет контрольных сумм, такая операция восстановления завершается аварийно с сообщением об отсутствии контрольных сумм. - NO_CHECKSUM
Явно отменяет стандартную проверку всех контрольных сумм операцией восстановления.
Управление реакцией на ошибки
Для задания поведения операции восстановления при возникновении ошибки SQL Server 2005 вводит следующие параметры инструкций RESTORE и RESTORE VERIFYONLY.
- CONTINUE_AFTER_ERROR
Указывает на то, что после возникновении ошибки операция восстановления должна продолжаться. Это стандартное поведение операции RESTORE VERIFYONLY, при котором она сообщает об ошибке проверки и продолжает работу, предоставляя как можно больше сведений о резервном наборе данных. CONTINUE_AFTER_ERROR инструктирует RESTORE продолжать работу в наиболее оптимальном режиме. Помимо всего прочего, это предписывает пропускать неверные контрольные суммы. - STOP_ON_ERROR
Указывает на то, что операция восстановления должна аварийно завершить работу при первой обнаруженной ошибке. Это является поведением по умолчанию для операции RESTORE.
См. также
Основные понятия
Использование зеркальных наборов резервных носителей
Действия при ошибках восстановления SQL Server, вызванных повреждением резервных копий
Другие ресурсы
ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL)
backupset (Transact-SQL)
RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)