Само слово «целостность» имеет несколько смыслов в мире SQL. Один из них относится к качеству данных, хранящихся на сервере. В другом смысле, целостность поддерживается через правильный ввод данных, ограничения на вводе, и проверку данных. В третьем смысле, целостность относится к логическому и физическому постоянству структуры базы данных – это гораздо более сложная тема, к которой как раз и относится данная статья.
В SQL-сервере есть команда DBCC, чтобы проверять целостность базы. Существует несколько вариантов этой команды, но сейчас мы поговорим только про DBCC CHECKDB. Эта команда проверяет внутренние структуры, метаданные, и данные в базе.
В своей простейшей форме команда выполняется в следующем формате: DBCC CHECKDB (имя базы данных);
Вывод этой команды бывает достаточно сложен, даже если проблем не обнаружено, поскольку выдается очень много различной информации, в которой нет смысла, если нет повреждений. К счастью, есть несколько опций для этой команды, чтобы ограничить вывод.
Когда команда обнаруживает проблему, легко запутаться в том, что она выдает. Для начала самое главное – это посмотреть на колонку «Уровень». Уровень показывает серьезность проблемы, и в первую очередь вам надо смотреть на проблемы с самым высоким уровнем 16.
Вы можете обратиться с запросами к sys.database_files или sys.master_files, чтобы посмотреть, какой файл содержит поврежденную страницу. Посмотрите на идентификаторы в сообщениях об ошибках, чтобы определить, какие объекты и индексы испытывают влияние от ошибки.
И последний совет, игнорируйте столбец RepairLevel, не используйте функции восстановления для CHECKDB, пока абсолютно все другие средства не были использованы и не помогли. Функция восстановления (repair) удалит страницы с данными, содержащими повреждения, и потом их нельзя будет восстановить, кроме как вручную ввести данные. Если вы не являетесь экспертом по работе с повреждениями в базе данных, найдите такого эксперта, перед тем, как пытаться как-то исправить проблему.
По материалам sqlsoldier.com