Поделиться через


Ошибка MSSQLSERVER 823

Область применения:SQL Server

Сведения

Атрибут Значение
Название продукта SQL Server
ИД события 823
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя B_HARDERR
Текст сообщения Операционная система возвратила ошибку %ls в SQL Server при %S_MSG в смещении %#016I64x файла «%ls». Дополнительные сведения см. в журнале ошибок SQL Server и журнале системных событий. Это серьезная ошибка системного уровня, которая угрожает целостности базы данных, поэтому она должна быть немедленно исправлена. Выполните полную проверку согласованности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими причинами. Дополнительные сведения см. в электронной документации по SQL Server.

Описание

SQL Server использует интерфейсы API Windows (например, ReadFile, WriteFile, ReadFileScatter, WriteFileGather) для операций файлового ввода-вывода. После выполнения этих операций ввода-вывода SQL Server проверяет наличие ошибок, связанных с этими вызовами API. Если при вызове API происходит сбой из-за ошибки операционной системы, SQL Server сообщает об ошибке 823.

В нем содержится следующая информация.

  • Файл базы данных, в котором выполнялась операция ввода-вывода.
  • Смещение в файле, где была предпринята попытка выполнить операцию ввода-вывода. Это смещение физического байта от начала файла. Деление этого числа на 8192 дает логический номер страницы, затронутый ошибкой.
  • Указывает, является ли операция ввода-вывода запросом на чтение или запись.
  • Код ошибки операционной системы и описание ошибки в скобках.

Ошибка операционной системы: Вызов API для чтения или записи не выполнен, и SQL Server сталкивается с ошибкой операционной системы, связанной с вызовом API Windows. В следующем примере показано сообщение об ошибке 823:

Error: 823, Severity: 24, State: 2.
2010-03-06 22:41:19.55 spid58 The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'e:\program files\Microsoft SQL Server\mssql\data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

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

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

Причина

Сообщение об ошибке 823 обычно указывает на то, что возникла проблема с базовой системой хранения или оборудованием или драйвером, который находится в пути запроса ввода-вывода. Эта ошибка может возникать, если в файловой системе возникли несоответствия или если файл базы данных поврежден. Для чтения файла SQL Server уже извлек запрос на чтение четыре раза, прежде чем он возвращает 823. Если операция повтора завершается успешно, запрос не завершается ошибкой, но сообщение MSSQLSERVER_825 записывается в журнал ошибок и журнал событий.

Действие пользователя

  • Просмотрите таблицу msdbsuspect_pages для других страниц, которые сталкиваются с этой проблемой (в одной базе данных или в разных базах данных).

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

  • Проверьте журналы событий Windows на наличие ошибок или сообщений от операционной системы, устройства хранения или драйвера устройства. Если они связаны с этой ошибкой каким-то образом, сначала укажите эти ошибки. Например, помимо сообщения 823, вы также можете заметить событие, например "Драйвер обнаружил ошибку контроллера на \Device\Harddisk4\DR4", сообщаемом источником диска в журнале событий. В этом случае необходимо проверить наличие этого файла на устройстве, а затем сначала исправить ошибки диска.

  • Используйте служебную программу SQLIOSim для имитации действий SQL Server в служебной программе подсистемы диска, чтобы узнать, могут ли эти ошибки 823 воспроизводиться вне обычных запросов ввода-вывода SQL Server. Служебная программа SQLIOSim поставляется с SQL Server 2008 и более поздними версиями, поэтому для отдельного скачивания не требуется. Обычно ее можно найти в папке C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn.

  • Обратитесь к поставщику оборудования или производителю устройств, чтобы убедиться в том, что

    • Аппаратные устройства и конфигурация соответствуют требованиям к ввода-выводам SQL Server
    • драйверы устройств и другие программные компоненты, поддерживающие все устройства в пути ввода-вывода, обновлены.
  • Если поставщик оборудования или производитель устройства предоставил вам диагностические служебные программы, используйте их для проверки работоспособности системы ввода-вывода.

  • Проверьте, нет ли драйверов фильтров, которые находятся в пути этих запросов ввода-вывода и вызывают проблемы.

    • Проверьте наличие обновлений для этих драйверов фильтра.
    • Могут ли эти драйверы фильтров быть удалены или отключены для наблюдения, если проблема, которая приводит к ошибке 823, исчезнет?