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.