What does HRESULT 0xC80003F5 (hrOutOfCursors) mean?

 
Previous Next
hrOutOfDatabaseSpace hrOutOfBuffers

hrOutOfCursors

Diagnostic focus

hrOutOfCursors means the process exhausted table cursor resources because cursors were opened faster than they were closed.

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

The key comparison is: hrCurrencyStackOutOfMemory concerns cursor navigation state; this result is exhaustion of cursor objects. The first useful observation is to count live JET_TABLEID values by session and capture allocation stacks or request owners. This evidence identifies the exhausted pool so a leak, long transaction, concurrency spike, and hard capacity limit are not confused.

The ESE objects in play

Diagnostic layerbounded engine, process, and storage resources
Typical API surfaceinstance system parameters, sessions, cursors, temporary tables, database attachment, and file growth
Code-specific conditionthe process exhausted table cursor resources because cursors were opened faster than they were closed
First corrective directionclose cursors deterministically, bound per-request fan-out, and reuse only where ownership is explicit

Resource codes should be tied to the exact exhausted pool rather than treated as generic low memory. Long transactions can retain versions and indirectly amplify memory and log pressure.

Evidence that resolves the ambiguity

  • live resource counts grouped by session and request owner; associate it with this result rather than with a later generic exception.
  • relevant JET_param values and process or system capacity at first failure; associate it with this result rather than with a later generic exception.
  • the oldest transaction, longest-held cursor, or file growth operation retaining the resource.

Nearby results that mean something different

hrOutOfBuffersthe database page cache could not supply another usable buffer for the requested work
hrOutOfDatabaseSpacethe database reached an engine-imposed growth ceiling rather than merely a full volume
hrDiskFullthe target volume cannot allocate space for database, log, checkpoint, or temporary growth

A disciplined correction path

  1. Freeze the failing request context and record 0xC80003F5, the Jet API name, and the current instance/session ownership.
  2. Apply the targeted fix: close cursors deterministically, bound per-request fan-out, and reuse only where ownership is explicit.
  3. Before retrying the operation, reconcile resource counts, owner cleanup, and capacity after the correction.

Actions that can hide or worsen the problem

  • Do not raise limits before checking ownership and release paths.
  • Do not create a retry storm while the exhausted resource remains unavailable.

Technical references


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