MSSQLSERVER_832

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

Сведения

Атрибут значение
Название продукта SQL Server
Идентификатор события 832
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя B_CONSTPAGECHANGED
Текст сообщения Страница, которая должна была быть константой, изменилась (ожидаемая контрольная сумма: ожидаемое значение, фактическая контрольная сумма: <фактическое значение>>, база данных <dbid>, файл "<имя файла>", страница страницы><). < Обычно это свидетельствует о сбое памяти или другом повреждении оборудования либо ОС.

Пояснение

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

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

Когда SQL Server обнаруживает эту ошибку поведения 832, возникает.

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

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

  • Необходимо выполнить стандартные проверки оборудования или системы, чтобы определить, есть ли проблемы с памятью, ЦП или другим оборудованием. Убедитесь в том, что в системе установлены все системные драйверы, обновления операционной системы и обновления оборудования. Также рекомендуется выполнить диагностику оборудования средствами производителя, включая тесты памяти.
  • Оцените, какие библиотеки DLL "внешних" могут быть загружены в SQL Server, которые могут вызвать эту проблему, включая расширенные хранимые процедуры, COM-объекты или другие библиотеки DLL, которые могут быть неправильно изменены памяти SQL Server, зарезервированной для страниц базы данных.

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

Дополнительные сведения

Эта ошибка обнаруживается фоновой задачей, называемой LazyWriter. (Команда для этой задачи называется LAZY WRITER.) Поэтому она не возвращается клиентскому приложению. Эта ошибка регистрируется в журнале событий приложений Windows как событие с идентификатором 832.

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

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

Дополнительные сведения о сообщении 832 можно также получить в документе Основные операции ввода-вывода в SQL Server, раздел 2.