| Previous | Next |
| hrCannotBeTagged | hrNoCurrentRecord |
hrRecordNotFound
Interpretation in ESE terms
hrRecordNotFound means a seek or lookup found no row matching the constructed key or bookmark criteria.
This is the legacy Directory Service backup/restore HRESULT form of JET_errRecordNotFound (0xC8000641).
The key comparison is: hrNoCurrentRecord is a cursor-position state; this result is the outcome of a lookup. The first useful observation is to record current index, key segments, normalization, seek relation, range, and transaction snapshot. This evidence distinguishes failed lookup, lost cursor currency, deleted rows, invalid bookmarks, and prepared-update state.
The ESE objects in play
| Diagnostic layer | cursor currency, bookmarks, prepared updates, and row lifecycle |
|---|---|
| Typical API surface | JetMove, JetSeek, JetGetBookmark, JetGotoBookmark, JetPrepareUpdate, JetUpdate, and JetDelete |
| Code-specific condition | a seek or lookup found no row matching the constructed key or bookmark criteria |
| First corrective direction | handle absence as data state, and verify key encoding before assuming corruption |
Preparing an update creates cursor state that must be completed or cancelled deliberately. Cursor currency can be invalidated by navigation, deletion, rollback, or concurrent changes.
Comparison with adjacent failures
hrRecordDeleted | the cursor refers to a row that was deleted after it became the current record |
|---|---|
hrUpdateNotPrepared | JetSetColumn/JetUpdate-style work reached a cursor without a matching prepared update state |
hrRecordClusteredChanged | an update attempted to change a clustered key in a way the engine cannot apply in place |
What to capture before retrying
- Code-specific observation: record current index, key segments, normalization, seek relation, range, and transaction snapshot.
- prepared-update mode, row version, transaction, and concurrent writer.
- the current index, seek relation, key, range, and preceding navigation result.
- bookmark bytes and the table/database context that produced them.
Actions that can hide or worsen the problem
- Do not reuse bookmarks after restore, rebuild, or incompatible schema change.
- Do not retry a write without rereading the row and its business preconditions.
Operational response
- Freeze the failing request context and record
0xC8000641, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: record current index, key segments, normalization, seek relation, range, and transaction snapshot.
- Apply the targeted fix: handle absence as data state, and verify key encoding before assuming corruption.
- Before retrying the operation, reconcile cursor currency, row existence, bookmark validity, and prepared-update cleanup.
Technical references
Looking for a different code? Search another status or error code.
