Published on

June 1, 2018

Как обнаружить повреждения базы данных в SQL Server

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

1. Восстановление – настройка проверки страниц

Опция Page Verify в SQL Server определяет, как проверяется состояние страницы при ее чтении или записи. Она может быть установлена для каждой базы данных либо через SQL Server Management Studio (SSMS), либо с помощью T-SQL скрипта. Чтобы установить эту опцию в SSMS, щелкните правой кнопкой мыши на базе данных, выберите свойства, перейдите на страницу Options и в разделе Recovery выберите соответствующую опцию Page Verify.

Кроме того, вы можете использовать следующий T-SQL скрипт для установки опции Page Verify:

ALTER DATABASE <имя базы данных>
SET PAGE_VERIFY CHECKSUM WITH NO_WAIT;

Существуют три варианта настройки Page Verify:

  • NONE: Никакая проверка страниц не выполняется.
  • TORN_PAGE_DETECTION: Старая опция, которая не рекомендуется для SQL Server 2005 и выше.
  • CHECKSUM: Лучший вариант для выбора. Если база данных создана в более новой версии SQL Server, CHECKSUM устанавливается по умолчанию. Если база данных обновлена/перенесена из более старой версии, убедитесь вручную изменить эту опцию на CHECKSUM.

Когда обращается к поврежденной странице, SQL Server выдаст ошибку (823, 824 или 825). Однако, если поврежденные страницы не используются, ошибки не возникнет.

2. Резервное копирование с контрольной суммой

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

BACKUP DATABASE <имя базы данных>
TO DISK='X:\SQLServerBackups\<имя базы данных>.bak'
WITH CHECKSUM;

Рекомендуется настроить задание резервного копирования для отправки уведомления по его завершении, независимо от того, успешно оно выполнено или нет. Это гарантирует, что задание было успешно выполнено.

3. DBCC CHECKDB

DBCC CHECKDB – это тщательный способ проверки всей базы данных на наличие повреждений. Эта проверка должна быть запланирована для выполнения во время окна обслуживания, ежедневно или еженедельно в зависимости от ресурсных возможностей системы. Чтобы запустить DBCC CHECKDB, используйте следующий синтаксис:

DBCC CHECKDB(<имя базы данных>);

Когда обнаруживаются повреждения, задание может успешно выполниться с информацией в выводе или завершиться с сообщением об ошибке. Рекомендуется отправлять вывод задания в текстовый файл и отправлять файл по электронной почте, независимо от успеха или неудачи задания.

4. Оповещения

Администраторы баз данных должны настроить оповещения, чтобы получать уведомления о любых критических ошибках в базе данных, включая ошибки повреждения. Существуют различные скрипты, доступные для настройки этих оповещений, такие как предоставленный Гленном Берри по этой ссылке: https://www.sqlskills.com/blogs/glenn/creating-sql-server-agent-alerts-for-critical-errors/

Заключение

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

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.