| Предыдущий | Следующий |
| 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 операции.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
