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


Ошибка 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 завершаются ошибкой операционной системы (OS), SQL Server сообщает об ошибке 823.

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

  • Файл базы данных, в котором выполнялась операция ввода-вывода.

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

  • Указывает, является ли операция ввода-вывода запросом на чтение или запись.

  • Код ошибки операционной системы и описание ошибки в скобках.

Ошибки, созданные операционной системой

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

Error: 823, Severity: 24, State: 2.
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 базе данных, связанной с файлом. Инструкцию 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 , чтобы узнать, можно ли воспроизвести эти ошибки 823 за пределами обычных запросов ввода-вывода SQL Server. Служебная программа SQLIOSim поставляется с SQL Server 2008 и более поздними версиями, поэтому для отдельного скачивания не требуется. Обычно ее можно найти в папке C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn.

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

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

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

    • Проверьте наличие обновлений для этих драйверов фильтров.

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

Пример ошибки ОС 21

В этом случае базовая ошибка ОС 21 указывает, что устройство диска находится в автономном режиме и недоступно для используемой ОС и SQL Server.

Error: 823, Severity: 24, State: 2.
The operating system returned error 21 (The device is not ready.) 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.

Резолюция

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

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