Устранение ошибок согласованности базы данных, сообщенных DBCC CHECKB

Применимо к: Microsoft SQL Server

Проблема


При выполнении команды DBCC CHECKDB (или другие аналогичные команды CHECKTABLE) журнал ОШИБОК SQL Server записывается сообщение, подобное следующему: 

Дата и время spid53      выполнения MYDOMAIN\theuser обнаружены ошибки, 15 и восстановлению 0 ошибок инструкция DBCC CHECKDB (mydb). Прошло времени: 0 часов 0 минут 0 секунд.  Моментальный снимок внутренней базы данных разделить номер LSN точка = 00000026:0000089 d: 0001 и первый номер LSN = 00000026:0000089 c: 0001.  Это информационное сообщение. Никаких действий пользователя не требуется.

Это сообщение показывает, сколько ошибок целостности базы данных были обнаружены и сколько были восстановлены (если используется параметр восстановления с помощью команды). Это сообщение также записывается в журнал событий приложений Windows как сообщение информации уровня с EventID = 8957 (даже если сообщение об ошибке это сообщение является уровень информационное сообщение).

Сведения в окне сообщения, начиная с «... моментальный снимок внутренней базы данных» отображается только в том случае, если команда DBCC CHECKDB была выполнена в оперативном режиме, то есть, если база данных не находится в режиме SINGLE_USER. Это происходит потому, что для интерактивной команды DBCC CHECKDB моментальный снимок внутренней базы данных используется для предоставления согласованного набора данных для проверки.

В этой статье будет рассматривается устранение неполадок каждого конкретного ошибка DBCC CHECKDB, но довольно общий подход при ошибках. Любая ссылка на CHECKDB в этой статье также относится к инструкции DBCC CHECKTABLE и CHECKFILEGROUP, если специально не указано.

Причина


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

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

Решение


Во-первых, наилучшим решением, если инструкция DBCC CHECKDB сообщает об ошибках согласованности является восстановление из проверенной рабочей резервной копии. Тем не менее если не удается восстановить из резервной копии, CHECKDB предоставляет возможность исправить ошибки. Если уровень системных сбоев файловой системы или оборудования может быть причиной таких проблем, рекомендуется устранить эти первый перед восстановлением или запуском восстановления.

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

CHECKDB найдено 0 ошибок распределения и 15 ошибок согласованности в базе данных «mydb».REPAIR_ALLOW_DATA_LOSS — уровень минимального ремонта ошибки, найденные с помощью инструкции DBCC CHECKDB (mydb

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

Чтобы найти причину причины возникновения ошибок согласованности базы данных, рассмотрим эти методы:

  • Проверьте журнал событий системы Windows для любого уровня системы, драйвера или диске ошибок, связанных с
  • Проверка целостности файловой системы с помощью команды chkdsk.
  • Запустите центр диагностики любой предоставленный к производителю устройства для компьютера или системного диска.
  • Работа с поставщиком оборудования или производителем устройства для обеспечения:
    • Оборудование и конфигурация подтверждает требования ввода-вывода SQL Server
    • Обновление драйверов устройств и других вспомогательных компонентов программного обеспечения всех устройств в пути ввода-вывода
  • Рекомендуется использовать программу, такую как SQLIOSim на тот же диск с базами данных, которые сообщили о ее от ошибок согласованности. SQLIOSim — это средство, независимо от ядра SQL Server для проверки целостности для дисковой системы ввода-вывода. Обратите внимание, что SQLIOSim поставляется вместе с SQL Server 2008 и не требует отдельной загрузки.
  • Проверьте наличие других ошибок, отчет по SQL Server, например нарушения прав доступа или утверждения.
  • Убедитесь, что базы данных с помощью параметра PAGE_VERIFY CHECKSUM. Если выводятся ошибки контрольной суммы, они являются показателями того, согласованность, ошибок после написания SQL Server страниц на диск, следует тщательно проверить дисковой системы. Как на Msg 824 Устранение неполадок в SQL Server более подробные сведения об ошибках контрольной суммы.
  • Искать Msg 832 ошибки в ЖУРНАЛ. Они являются показателями того, страницы мая повреждены, пока они находятся в кэше, прежде чем записываются на диск. Способы устранения неполадок 832 Msg в SQL Server для получения дополнительных сведений.
  • Попробуйте восстановить резервную копию базы данных, вы знаете, «очистить» (нет ошибок из CHECKDB) и резервных копий журналов транзакций, которые вы знаете, охватывающих время, когда произошла ошибка. Можно «воспроизвести» эту проблему путем восстановления резервной копии базы данных «чистое» и транзакции входит затем за помощью в службу технической поддержки Майкрософт.
  • Чистота ошибки может быть проблема с приложением, вставки или обновления недопустимых данных в таблицах SQL Server. Дополнительные сведения об устранении неполадок чистота данных ошибок обратитесь к следующей статье: Устранение неполадок 2570 DBCC ошибок в SQL server 2005

Дополнительная информация


Дополнительные сведения о синтаксисе DBCC CHECKDB и/параметры сведений о том, как выполнить команду Прочитайте раздел электронной документации по SQL Server команды DBCC CHECKDB.

Если ошибки найдены, CHECKDB, в ЖУРНАЛ в целях сообщения об ошибках выводятся дополнительные сообщения следующим образом:

Дата и время с помощью spid53 «dbghelp.dll» версии "4.0.5»Дата и время spid53 ** дамп потока - spid = 0, EC = 0x00000000855F5EB0Дата и время spid53 *** дамп стека, отправляемые spid53 FilePath\FileNameДата и время * ***Дата и время spid53 *Дата и время spid53 * начало стека:Дата и время spid53 * Время spid 53Дата и время spid53 *Дата и время spid53 * повреждения базы данных DBCCДата и время spid53 *Дата и время spid53 * 84 входной буфер байтов -Дата и время spid53 * dbcc checkdb(mydb)Дата и время spid53 * spid53 Время * ***Дата и время spid53 *---Дата и время spid53 * короткие стекаДата и время spid53 подпись стека для дампа является 0x00000000000001E8Дата и время spid53 внешнего дампа процесса возврата кода 0x20002001.Сведения об ошибке отправляется Watson сообщения об ошибках.

Файлы, используемые для отчетов об ошибках включают SQLDump < nnn > txt-файл. Он содержит список ошибок, найденных в формате XML из CHECKDB этот файл можно использовать для исторических целей.

Чтобы определить, когда время последнего запуска инструкции DBCC CHECKDB без ошибок, обнаруженных в базе данных (последний известный чистой CHECKDB), проверьте журнал ОШИБОК SQL Server сообщения как в следующем примере для базы данных или базы данных системы (это сообщение записывается как уровень информации сообщение в журнал событий приложений Windows с EventID = 17573):

Дата и время spid7s CHECKDB для базы данных «master» завершилась без ошибок в 22:11:11.417 Дата и время (по местному времени). Это сообщение является информационным не требуется никаких действий пользователя