Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить неполадки с сообщением об ошибке идентификатора события 50.
Симптомы
Когда Windows записывает сведения на физический диск, он может записывать следующие сообщения о событиях в системном журнале:
Идентификатор события: 50
Тип события: предупреждение
Источник события: Ftdisk
Описание: {Lost Delayed-Write Data} Система пыталась передать данные файлов из буферов в \Device\HarddiskVolume4. Операция записи завершилась сбоем, и только некоторые из данных, возможно, были записаны в файл.
Данные:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80
Идентификатор события: 26
Тип события: сведения
Источник событий: всплывающее окно приложения
Описание: Windows — ошибка задержки записи: Windows не удалось сохранить все данные для файла \Device\HarddiskVolume4\Program Files\Microsoft SQL Server\MSSQL$INSTANCETWO\LOG\ERRORLOG. Данные были потеряны. Эта ошибка может быть вызвана сбоем оборудования компьютера или сетевого подключения.Попробуйте сохранить этот файл в другом месте.
Эти сообщения о событиях означают точно то же самое и создаются по тем же причинам. В этой статье рассматривается идентификатор события 50.
Примечание.
Устройство и путь в описании и конкретные шестнадцатеричные данные в этих сообщениях зависят от точных обстоятельств, вызвавших событие.
Дополнительная информация
Существует несколько различных источников для сообщения с идентификатором события 50. Например, сообщение с идентификатором события 50, зарегистрированное из источника MRxSmb, возникает, если возникла проблема с сетевым подключением, включающая перенаправление. В этой статье рассматриваются сообщения с идентификатором события 50, ссылающиеся на проблемы записи на диск. Просмотрите сообщение с идентификатором события 50, чтобы убедиться, что он ссылается на проблему записи на диск и что эта статья применяется.
В этом контексте Windows регистрирует сообщение события 50, если возникает универсальная ошибка при попытке Windows записывать сведения из диспетчера кэша файловой системы (а не кэша аппаратного уровня) на физический диск. Это поведение записи, известное как кэширование обратной записи или отложенной записи, является частью функции управления памятью Windows. Кэширование обратной записи повышает производительность системы. Однако сбои в операциях с задержкой записи могут привести к потере целостности данных или тома.
Как правило, когда приложение отправляет запрос на запись в Windows, диспетчер кэша кэширует запрос на запись и сообщает приложению, что запись выполнена успешно. Позже диспетчер кэша записывает данные на физический диск, а затем очищает кэш. Если во время операции записи возникает ошибка, данные теряются при очистке кэша диспетчером кэша.
Приложения или процессы, которые записывают некритичные данные, такие как процессы ведения журнала, используют диспетчер кэша для повышения общей производительности. Приложения, которые записывают критически важные данные, такие как SQL Server, не используют диспетчер кэша. Такие приложения устанавливают FILE_FLAG_NO_BUFFERING
флаг, чтобы гарантировать, что транзакция завершена непосредственно на диск. Запись непосредственно на диск никогда не создает сообщения с идентификатором события 50.
Сообщение с идентификатором события 50 аналогично идентификатору события 9 или сообщению идентификатора события 11. Хотя ошибка не так серьезна, как ошибка, указанная в сообщении идентификатора события 9 или идентификатора события 11, можно использовать те же методы устранения неполадок для сообщения с идентификатором события 50, что и для идентификатора события 9 и сообщения события 11. Однако помните, что все, что находится в стеке, может привести к потере операций записи задержки, таких как драйверы фильтров и мини-порты.
Декодирование примера события
В разделе "Симптомы" этой статьи представлен следующий пример сообщения идентификатора события 50:
Идентификатор события: 50
Тип события: предупреждение
Источник события: Ftdisk
Описание: {Lost Delayed-Write Data} Система пыталась передать данные файлов из буферов в \Device\HarddiskVolume4. Операция записи завершилась сбоем, и только некоторые из данных, возможно, были записаны в файл.
Данные:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80
Определение целевого диска
Вы можете определить диск, который был целью операции записи, используя символьную ссылку, указанную для диска в разделе "Описание" сообщения идентификатора события, например \Device\HarddiskVolume4.
Как декодировать раздел данных
Идентификатор события 50 сообщений (а также идентификатор события 9, 11, 51 или аналогичные сообщения DISK) включают двоичные данные, которые можно использовать для выявления проблемы. Сообщение содержит следующий раздел данных:
Данные:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80
Примечание.
При преобразовании шестнадцатеричных данных в сообщение идентификатора события в код состояния помните, что значения представлены в маленьком формате.
В следующей таблице описывается, что представляет каждое смещение этого сообщения.
OffsetLengthValues | Length | Значения |
---|---|---|
0x00 | 2 | Не используется |
0x02 | 2 | Размер данных дампа = 0x0004 |
0x04 | 2 | Число строк = 0x0002 |
0x06 | 2 | Смещение к строкам |
0x08 | 2 | Категория событий |
0x0c | 4 | Код ошибки NTSTATUS |
0x10 | 8 | Не используется |
0x18 | 8 | Не используется |
0x20 | 8 | Не используется |
0x28 | 4 | Код ошибки состояния NT |
Код ошибки состояния NT
Последний код состояния является наиболее важным фрагментом информации в сообщении идентификатора события 50. Это код ошибки, возвращаемый при выполнении запроса на запись, и это ключевой источник информации. В примере окончательный код состояния указан в 0x28 в шестой строке набора данных. В начале с "0028:" и включает четыре октета в этой строке:
0028: 11 00 00 80
При преобразовании шестнадцатеричных данных в сообщении идентификатора события 50 в код состояния помните, что значения представлены в маленьком формате. Так как код состояния является единственным интересующим вас фрагментом информации, это может быть проще просматривать данные в формате WORDS вместо БАЙТ. Если это сделать, байты будут иметь правильный формат, и данные могут быть проще интерпретировать быстро.
Чтобы изменить представление данных, выберите "Слова " в окне "Свойства события". В представлении "Слова данных" раздел данных примера считывается следующим образом:
() Bytes (.)
Words 0000: 00040000 00560002 00000000 80040032 0010: 00000000 00000000 00000000 00000000 0020: 00000000 00000000 80000011
В этом случае окончательный код состояния 0x80000011. Этот код состояния сопоставляется STATUS_DEVICE_BUSY
и подразумевает, что устройство в настоящее время занято. Это была причина сбоя операции записи.
Дополнительные сведения о кодах состояния NT см. в разделе "Использование значений NTSTATUS". Список кодов также доступен в пакете SDK для разработчиков программного обеспечения Windows в NTSTATUS. H-файл .
Код категории событий
В примере код категории событий (код, связанный с идентификатором события 50), отображается во второй строке. Эта строка начинается с "0008:" и включает последние 4 байта следующей строки:
0008: 00 00 00 00 32 00 04 80
В этом случае код ошибки 0x80040032, соответствующий IO_LOST_DELAYED_WRITE
. Эта информация отображается в описании события как "Потерянные отложенные данные записи".