| Previous | Next |
| hrNoCurrentRecord | hrKeyDuplicate |
hrRecordClusteredChanged
Interpretation in ESE terms
hrRecordClusteredChanged means an update attempted to change a clustered key in a way the engine cannot apply in place.
This is the legacy Directory Service backup/restore HRESULT form of JET_errRecordClusteredChanged (0xC8000644).
The key comparison is: hrKeyDuplicate is uniqueness failure; this code concerns changing the physical clustered identity. The first useful observation is to capture old and new clustered-key values, prepared update mode, index definition, and row dependencies. 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 | an update attempted to change a clustered key in a way the engine cannot apply in place |
| First corrective direction | delete/reinsert or migrate through a supported workflow when the clustered key must change |
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
hrNoCurrentRecord | the cursor is before-first, after-last, on a deleted row, or otherwise not positioned on a record |
|---|---|
hrRecordDeleted | the cursor refers to a row that was deleted after it became the current record |
hrInvalidBookmark | a bookmark cannot be interpreted for the current table and index context |
What to capture before retrying
- Code-specific observation: capture old and new clustered-key values, prepared update mode, index definition, and row dependencies.
- bookmark bytes and the table/database context that produced them; associate it with this result rather than with a later generic exception.
- prepared-update mode, row version, transaction, and concurrent writer.
- the current index, seek relation, key, range, and preceding navigation result.
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
0xC8000644, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: capture old and new clustered-key values, prepared update mode, index definition, and row dependencies.
- Apply the targeted fix: delete/reinsert or migrate through a supported workflow when the clustered key must change.
- 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.
