| Previous | Next |
| hrOutOfCursors | hrTooManyIndexes |
hrOutOfBuffers
Diagnostic focus
hrOutOfBuffers means the database page cache could not supply another usable buffer for the requested work.
This is the legacy Directory Service backup/restore HRESULT form of JET_errOutOfBuffers (0xC80003F6).
The key comparison is: this is not the same as general process memory exhaustion or an undersized caller output buffer. The first useful observation is to capture cache parameters, dirty-page pressure, outstanding I/O, and whether the workload is scanning or updating. 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 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 | the database page cache could not supply another usable buffer for the requested work |
| First corrective direction | relieve I/O pressure, review cache sizing, and avoid multiplying concurrent scans during recovery |
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
This is not the same as general process memory exhaustion or an undersized caller output buffer. The following neighboring results belong to the same broad subsystem but mark different boundaries:
hrDiskFull | the target volume cannot allocate space for database, log, checkpoint, or temporary growth |
|---|---|
hrOutOfCursors | the process exhausted table cursor resources because cursors were opened faster than they were closed |
hrCurrencyStackOutOfMemory | cursor navigation state exhausted the engine resource used to preserve currency |
A disciplined correction path
- Freeze the failing request context and record
0xC80003F6, the Jet API name, and the current instance/session ownership. - Apply the targeted fix: relieve I/O pressure, review cache sizing, and avoid multiplying concurrent scans during recovery.
- 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.
