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


MSSQLSERVER_824

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

Сведения

Атрибут Значение
Наименование продукта: SQL Server
ИД события 824
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя B_HARDSSERR
Текст сообщения SQL Server обнаружил логическую ошибку ввода-вывода, связанную с согласованностью: %ls. Она произошла при %S_MSG страницы %S_PGID в базе данных с идентификатором %d по смещению %#016I64x файла «%ls». Дополнительные сообщения в журнале ошибок SQL Server или журнале ошибок операционной системы могут содержать дополнительные сведения. Это серьезная ошибка, которая угрожает целостности базы данных, поэтому она должна быть немедленно исправлена. Выполните полную проверку согласованности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; Дополнительные сведения см. в разделе https://go.microsoft.com/fwlink/?linkid=2252374.

Симптом

В журнале ошибок SQL Server или журнале событий приложений Windows может появиться следующее сообщение об ошибке, если после чтения или записи базы данных произошел сбой проверки логической согласованности:

2022-11-02 15:46:42.90 spid51      Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51      SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.

Если запрос SELECT или DML выполняется в этом сообщении, сообщение об ошибке возвращается приложению, а подключение к базе данных завершается.

Причина

Эта ошибка означает, что Windows сообщает, что страница успешно считывается с диска, но SQL Server обнаружила что-то неправильное со страницей. Эта ошибка аналогична ошибке 823, за исключением того, что Windows не обнаружила ошибку. Ошибка 824 обычно указывает на проблему в подсистеме ввода-вывода, например сбой дисков, проблемы встроенного ПО, неисправные драйверы устройств и т. д. Дополнительные сведения об ошибках ввода-вывода см. в главе 2 документации Майкрософт об основных операциях ввода-вывода в SQL Server.

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

В сообщении об ошибке 824 содержатся следующие сведения:

  • Файл базы данных, для которого была выполнена операция ввода-вывода.
  • Смещение в файле, где была предпринята попытка выполнить операцию ввода-вывода.
  • База данных, которой принадлежит этот файл.
  • Номер страницы, включенной в операцию ввода-вывода.
  • Была ли это операция чтения или записи.
  • Сведения о проверке логической согласованности, которая завершилась ошибкой (тип проверки, фактическое значение и ожидаемое значение, используемое для этой проверки).

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

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

Разрешение

При возникновении ошибки 824 можно попробовать следующие решения.

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

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Проверьте согласованность баз данных, расположенных в томе (как сообщается в сообщении 824), с помощью команды DBCC CHECKDB. Если вы найдете несоответствия из DBCC CHECKDB команды, воспользуйтесь руководством из статьи Базы знаний, чтобы устранить ошибки согласованности базы данных, сообщаемые DBCC CHECKDB.

    DBCC CHECKDB;
    
  • Если в базе данных, которая сталкивается с этими ошибками 824, не PAGE_VERIFY CHECKSUM включен параметр базы данных, включите этот параметр немедленно. Ошибки 824 могут возникать по другим причинам, кроме ошибки контрольной суммы, но CHECKSUM обеспечивает наилучший вариант проверки согласованности страницы после ее записи на диск. Используйте этот скрипт для определения баз данных, где параметр CHECKSUM не включен:

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Проверьте журналы событий Windows на наличие ошибок или сообщений от операционной системы, устройства хранения или драйвера устройства. Если они связаны с этой ошибкой каким-то образом, сначала следует устранить эти ошибки. Например, помимо сообщения 824, вы также можете заметить событие, например "Драйвер обнаружил ошибку контроллера на \Device\Harddisk4\DR4", сообщаемом источником диска в журнале событий. В этом случае необходимо проверить наличие этого файла на устройстве, а затем сначала исправить ошибки диска.

  • Используйте служебную программу SQLIOSim, чтобы узнать, можно ли воспроизвести ошибки 824 за пределами обычных запросов ввода-вывода SQL Server. SQLIOSim поставляется с SQL Server 2008 (10.0.x) и более поздними версиями, поэтому для отдельного скачивания не требуется.

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

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

  • Оцените наличие драйверов фильтров, которые существуют на пути ввода-вывода этих запросов. Для перечисления всех драйверов фильтров в системе можно выполнить следующие команды:

    fltmc filters
    fltmc instances
    
    • Исключите файлы базы данных и журналов из проверки такими драйверами фильтров. Дополнительные сведения см. в разделе "Каталоги и расширения имен файлов", чтобы исключить из проверки вирусов
    • Проверьте наличие обновлений для этих драйверов фильтра.
    • Могут ли эти драйверы фильтров быть удалены или отключены для наблюдения, если проблема, которая приводит к ошибке 824, исчезнет?
  • Если вы используете виртуальную машину, убедитесь, что все драйверы виртуализации обновляются или проверяются поставщиком виртуализации для получения дополнительных сведений.

  • Если проблема не связана с оборудованием, а известная чистая резервная копия доступна, восстановите базу данных из резервной копии.