Что означает код HRESULT 0xC8000641 (hrRecordNotFound)?

 
Предыдущий Следующий
hrCannotBeTagged hrNoCurrentRecord

hrRecordNotFound

Что означает hrRecordNotFound

hrRecordNotFound (0xC8000641) — ключ не найден.

Что проверить

Зафиксируйте базу, таблицу или сессию ESE и первый API Jet/ESENT, который вернул hrRecordNotFound.

  • Проверьте состояние базы и журналов ESE, свободные ресурсы процесса и состояние активной транзакции именно в момент отказа.
  • Если ошибка возникла при восстановлении или работе с журналами, сопоставьте поколения журналов, контрольную точку и выбранный набор файлов; не подменяйте восстановление простым повтором операции.
  • Проверьте, должен ли объект, на который ссылается операция hrRecordNotFound, существовать на этом сервере или устройстве. Если должен — исправьте ссылку либо восстановите объект; если отсутствие допустимо — обработайте его как отдельное состояние.

Практический смысл и диагностика

  • Seek или lookup не нашёл строку, соответствующую построенному key или bookmark criteria.
  • Проверяйте конкретный API surface: `JetMove`, `JetSeek`, `JetGetBookmark`, `JetGotoBookmark`, `JetPrepareUpdate`, `JetUpdate` и `JetDelete` имеют разные требования к позиции cursor.
  • Ключевое отличие от `hrNoCurrentRecord`: тот код описывает отсутствие текущей позиции cursor, а здесь именно lookup завершился без совпадения.
  • `hrUpdateNotPrepared` означает, что `JetSetColumn`/`JetUpdate`-подобная операция дошла до cursor без соответствующего prepared update state.
  • Не повторяйте write вслепую: сначала перечитайте row и заново проверьте business preconditions операции.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.