What does HRESULT 0x8800040F (hrSeekNotEqual) mean?

 
Previous Next
hrDatabaseAttached hrNoIdleActivity

hrSeekNotEqual

Why this result matters

hrSeekNotEqual means a less-than-or-equal or greater-than-or-equal seek positioned the cursor without finding an exact key match.

The stored value is 0x8800040F (positive JET status 1039; 1039). The HRESULT carries a warning, so the call may have useful output or a valid cursor state that must be inspected. Current ESE documentation uses JET_wrnSeekNotEqual for the corresponding published JET condition.

The first useful distinction is that the cursor can be validly positioned even though equality was not achieved; hrRecordNotFound is a different outcome. Start by preserving the search key, index name, seek flags, returned key, range limits, and current-record state.

Do not confuse it with

This result specifically means that the cursor can be validly positioned even though equality was not achieved; hrRecordNotFound is a different outcome. Related values below can appear in the same workflow but require a different response:

hrKeyChangedcursor movement or update caused the current index key to change
hrTableEmptythe table opened successfully but contains no current record for navigation
hrNyithe selected legacy Directory Service backup or restore entry point is present but that operation is not implemented

Keep the original constant and hexadecimal value in telemetry. Replacing this result with “backup failed” or “database warning” removes the state information needed to select the next legal API call.

Forensic checklist

  • Code-specific observation: preserve the search key, index name, seek flags, returned key, range limits, and current-record state.

Objects and state involved

Diagnostic layercursor position, current-record validity, and ordered index navigation
Relevant API surfaceseek, move, range, key construction, table open, and post-update navigation
Code-specific conditiona less-than-or-equal or greater-than-or-equal seek positioned the cursor without finding an exact key match
Narrow corrective directioninspect the current key and accept or reject the nearest record according to the requested range semantics

A warning can leave the cursor positioned on a valid non-equal record. Cursor state must be rechecked after updates, deletes, and key changes.

Actions that can make diagnosis worse

  • Do not read columns before confirming a current record.
  • Do not assume ordered iteration remains valid after an indexed key changes.

Validation after correction

  1. Record it, 0x8800040F, the API name, the current phase, and all live context or file owners.
  2. Verify the condition by preserving the search key, index name, seek flags, returned key, range limits, and current-record state.
  3. Apply only the targeted fix: inspect the current key and accept or reject the nearest record according to the requested range semantics.

Acceptance criteria for a fix

A useful regression test should force the condition “a less-than-or-equal or greater-than-or-equal seek positioned the cursor without finding an exact key match”, call one documented API transition, and assert the exact HRESULT.

Technical references


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