Site icon EfmSoft

What does HRESULT 0xC8000649 (hrUpdateNotPrepared) mean?

 
Previous Next
hrKeyNotMade hrerrDataHasChanged

hrUpdateNotPrepared

The object and state that matter

hrUpdateNotPrepared means JetSetColumn/JetUpdate-style work reached a cursor without a matching prepared update state.

This is the legacy Directory Service backup/restore HRESULT form of JET_errUpdateNotPrepared (0xC8000649).

The key comparison is: hrAlreadyPrepared means stale preparation remains; this code means preparation is absent. The first useful observation is to record the intended JET_prep mode, cursor, transaction, and any rollback/cancel path. This evidence distinguishes failed lookup, lost cursor currency, deleted rows, invalid bookmarks, and prepared-update state.

Minimum useful trace

How to avoid a false diagnosis

hrRecordNotFounda seek or lookup found no row matching the constructed key or bookmark criteria
hrAlreadyPreparedthe cursor already has a prepared update/copy state and received another incompatible prepare request
hrRecordDeletedthe cursor refers to a row that was deleted after it became the current record

The ESE objects in play

Diagnostic layercursor currency, bookmarks, prepared updates, and row lifecycle
Typical API surfaceJetMove, JetSeek, JetGetBookmark, JetGotoBookmark, JetPrepareUpdate, JetUpdate, and JetDelete
Code-specific conditionJetSetColumn/JetUpdate-style work reached a cursor without a matching prepared update state
First corrective directioncall JetPrepareUpdate on the same cursor and keep prepare/set/update within one controlled scope

Cursor currency can be invalidated by navigation, deletion, rollback, or concurrent changes. Bookmarks are opaque binary values tied to a table/index context.

Safe recovery sequence

  1. Freeze the failing request context and record 0xC8000649, the Jet API name, and the current instance/session ownership.
  2. Verify the code-specific precondition: record the intended JET_prep mode, cursor, transaction, and any rollback/cancel path.
  3. Apply the targeted fix: call JetPrepareUpdate on the same cursor and keep prepare/set/update within one controlled scope.
  4. Before retrying the operation, reconcile cursor currency, row existence, bookmark validity, and prepared-update cleanup.

Actions that can hide or worsen the problem

Technical references


Looking for a different code? Search another status or error code.

Exit mobile version