Ошибка MSSQL: ошибка ввода-вывода, связанная с непротиворечивостью — может ли она быть вызвана проблемой MSSQL или ОС?

Ошибка MSSQL: ошибка ввода-вывода, связанная с непротиворечивостью — может ли она быть вызвана проблемой MSSQL или ОС?

Вот что я увидел в журнале ошибок Windows:

SQL Server обнаружил логическую ошибку ввода-вывода на основе согласованности: неверная контрольная сумма (ожидалось: 0x19fedd20; фактически: 0x19fed5e3). Она произошла во время чтения страницы (1:1764) в базе данных с идентификатором 6 по смещению 0x00000000dc8000 в файле 'D:\mssql\local_repository_pbdiffimport.mdf'. Дополнительные сообщения в журнале ошибок SQL Server или системном журнале событий могут предоставить более подробную информацию. Это серьезное состояние ошибки, которое угрожает целостности базы данных и должно быть немедленно исправлено. Выполните полную проверку согласованности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Books Online.

Я побежал

dbcc checkdb

который сказал мне, что я должен восстановить с опцией REPAIR_ALLOW_DATA_LOSS, поэтому я в конечном итоге запустил

DBCC CHECKDB (my_db_name, REPAIR_ALLOW_DATA_LOSS) С NO_INFOMSGS

Но это привело к потере около 2000 строк. Я восстановил резервную копию, но теперь я боюсь, что это произойдет снова, так как у нас уже была проблема согласованности в той же базе данных около 2 недель назад, но тогда это произошло в индексе (пересоздание индексов решило проблему).

Мы проверили диски — RAID5 выглядит хорошо, ошибок нет, и ни одна из утилит проверки дисков не выявила никаких проблем с оборудованием.

Может ли это быть вызвано ОС (Windows Server 2003) или MSSQL (MSSQL Server 2005)?

решение1

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

Мои предложения:

  • Убедитесь, что параметр базы данных Page_Verify установлен на CHECKSUM. Это проверяет все записи до их выполнения и является настройкой по умолчанию в SQL Server 2005.
  • Резервное копирование ежедневно или несколько раз в день (в зависимости от необходимости)
  • Настройте планы обслуживания, чтобы ежедневно проверять согласованность вашей базы данных.
  • Регулярно обновляйте Windows Server и SQL Server, а также стороннее программное обеспечение.
  • Читать "Лучшие советы по эффективному обслуживанию базы данных" поскольку он более подробно объясняет большинство моих предложений.

Я настоятельно рекомендую эту статью, поскольку она была написана, чтобы помочь системным администраторам, которые не знают, как управлять сервером баз данных.

решение2

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

Запустите SQLIOSIM, чтобы нагрузить диск на +24 часа. Если SQLIOSIM сообщает об ошибке, вам придется связаться с поставщиком оборудования для расследования. Это может быть связано с диском, с RAID-массивом, с драйверами. ОС и SQL — наименее вероятные виновники.

ВидетьКак использовать утилиту SQLIOSim для имитации активности SQL Server на дисковой подсистеме.

решение3

Определенно не проблема SQL Server (ну, очень-очень-очень маловероятно). ТАКЖЕ вряд ли это проблема ОС — просто потому, что случайные записи слишком очевидны, чтобы долго существовать как ошибка.

Это серьезно указывает на аппаратное обеспечение. Оперативная память (вы используете ECC?) является возможным виновником, как и любые другие виды связанных проблем (RAID-контроллер? Диски?)

Связанный контент