| Previous | Next |
| hrVersionStoreOutOfMemory | hrOutOfSessions |
hrCurrencyStackOutOfMemory
The object and state that matter
hrCurrencyStackOutOfMemory means cursor navigation state exhausted the engine resource used to preserve currency.
This is the legacy Directory Service backup/restore HRESULT form of JET_errCurrencyStackOutOfMemory (0xC800042E).
The key comparison is: hrOutOfCursors counts cursor objects; this code concerns the state stack behind cursor positioning. The first useful observation is to trace nested cursor operations, duplicated cursors, index switches, and recursive navigation patterns. This evidence identifies the exhausted pool so a leak, long transaction, concurrency spike, and hard capacity limit are not confused.
Minimum useful trace
- Code-specific observation: trace nested cursor operations, duplicated cursors, index switches, and recursive navigation patterns.
- 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; associate it with this result rather than with a later generic exception.
- live resource counts grouped by session and request owner.
How to avoid a false diagnosis
hrVersionStoreOutOfMemory | the version store cannot retain more transactional versions under current workload and limits |
|---|---|
hrDiskFull | the target volume cannot allocate space for database, log, checkpoint, or temporary growth |
hrTooManySorts | temporary sort resources are exhausted by concurrent or unreleased sort operations |
The ESE objects in play
| Diagnostic layer | bounded engine, process, and storage resources |
|---|---|
| Typical API surface | instance system parameters, sessions, cursors, temporary tables, database attachment, and file growth |
| Code-specific condition | cursor navigation state exhausted the engine resource used to preserve currency |
| First corrective direction | simplify nested navigation and close duplicated cursors at the scope that created them |
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.
Safe recovery sequence
- Freeze the failing request context and record
0xC800042E, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: trace nested cursor operations, duplicated cursors, index switches, and recursive navigation patterns.
- Apply the targeted fix: simplify nested navigation and close duplicated cursors at the scope that created them.
- 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
- JET_param enumeration.
- Transactions and save points
- ESE files and storage paths
- ESE source repository
- Microsoft: JET_ERR enumeration
Looking for a different code? Search another status or error code.