| Previous | Next |
| hrBFInUse | hrFLDTooManySegments |
hrPMRecDeleted
State represented by this code
hrPMRecDeleted means a legacy page/record-manager path found that the target record had already been deleted.
The stored value is 0xC800012E (negative JET error -302; -302). The legacy symbolic name comes from the Windows Directory Service backup/restore message header.
The first useful distinction is that the code is about record lifetime, not a missing database page or malformed bookmark by itself. Start by capturing bookmark or key, page identity, transaction snapshot, delete owner, and whether the cursor was refreshed after concurrent work.
Data for a reproducible incident
- Code-specific observation: capture bookmark or key, page identity, transaction snapshot, delete owner, and whether the cursor was refreshed after concurrent work.
Objects and state involved
| Diagnostic layer | record lifetime and index key-definition constraints |
|---|---|
| Relevant API surface | cursor seeks, bookmarks, deletes, schema creation, and index maintenance |
| Code-specific condition | a legacy page/record-manager path found that the target record had already been deleted |
| Narrow corrective direction | reseek from a stable key and make concurrent deletion an explicit branch in the caller |
Record deletion is a normal concurrency outcome that must be distinguished from structural corruption. Index segment count and key byte size are separate limits.
Actions that can make diagnosis worse
- Do not remove arbitrary key columns without checking query semantics.
- Do not reuse a stale bookmark without reseeking.
Nearby ESE or AD backup states
It specifically means that the code is about record lifetime, not a missing database page or malformed bookmark by itself. Related values below can appear in the same workflow but require a different response:
hrFLDTooManySegments | an index key definition contains more segments than the legacy record manager supports |
|---|---|
hrCircularLogging | the Directory Service component is using circular logs, so the historical range needed for an incremental backup is not guaranteed to remain |
hrBadLogVersion | the transaction log format is incompatible with the ESE version attempting to read it |
Next actions
- Record it,
0xC800012E, the API name, the current phase, and all live context or file owners. - Verify the condition by capturing bookmark or key, page identity, transaction snapshot, delete owner, and whether the cursor was refreshed after concurrent work.
- Apply only the targeted fix: reseek from a stable key and make concurrent deletion an explicit branch in the caller.
Acceptance criteria for a fix
A useful regression test should force the condition “a legacy page/record-manager path found that the target record had already been deleted”, call one documented API transition, and assert the exact HRESULT.
Technical references
- ESE errors — API ordering, file semantics, warning/error interpretation, or recovery behavior relevant to this HRESULT.
- JET_ERR enumeration
- Open-source ESE implementation
Looking for a different code? Search another status or error code.
