What does HRESULT 0x00040EC3 (DB_S_BOOKMARKSKIPPED) mean?

 
Previous Next
DB_S_TYPEINFOOVERRIDDEN DB_S_NONEXTROWSET

DB_S_BOOKMARKSKIPPED

OLE DB skipped a bookmark for a deleted or nonmember row

DB_S_BOOKMARKSKIPPED is HRESULT 265923 (0x00040EC3) from Microsoft OLE DB. The documented description is “Bookmark was skipped for deleted or nonmember row.” The high-order severity bit is clear, so this is a success result, but it carries more information than plain S_OK.

The rowset operation continued but did not return the row identified by a bookmark because that row was deleted or no longer belongs to the rowset.

Evidence to preserve

  • Preserve bookmark bytes and source rowset identity.
  • Preserve rowset change model.
  • Preserve deleted-row notifications.
  • Preserve rows actually obtained.
  • Preserve next fetch position.

Where the result is encountered

  • This result can appear in IRowsetLocate and IRowsetFind; record the producing interface and method.
  • This result can appear in dynamic rowsets under concurrent updates; record the producing interface and method.
  • It can appear in bookmark-based paging or resume logic; record the producing interface and method.

State to verify

The central question is whether the consumer distinguishes a stale bookmark from end-of-rowset and continues from a defined position.

Diagnostic sequence

  • Capture the raw HRESULT 0x00040EC3 immediately after the returning method and record whether the caller used SUCCEEDED, FAILED, equality testing, or exception translation.
  • Verify the method-specific state: the consumer distinguishes a stale bookmark from end-of-rowset and continues from a defined position.

Difference from nearby HRESULT values

DB_S_BADROWHANDLE concerns an HROW; it concerns a bookmark whose row disappeared or left the membership set.

Correct handling, retry, and recovery

Discard or refresh the stale bookmark, process other returned rows, and obtain a new bookmark from the current rowset. Do not reuse bookmarks across unrelated rowset instances.

Practical validation scenario

A live result set is paged by bookmarks while another transaction deletes a row. The consumer logs the skipped bookmark, continues with remaining rows, and rebuilds its resume token.

Developer and administrator guidance

References


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