| Previous | Next |
| hrOutOfMemory | hrOutOfCursors |
hrOutOfDatabaseSpace
Locate the failure in the Jet call chain
For hrOutOfDatabaseSpace, the diagnostic value comes from the specific ESE error family and the exact operation that returned it. The decisive boundary is the database reached an engine-imposed growth ceiling rather than merely a full volume.
This result is the legacy Directory Service backup/restore HRESULT form of the ESE condition normally written as JET_errOutOfDatabaseSpace. Preserve the original value 0xC80003F4 when a wrapper also exposes a signed JET_ERR.
The key comparison for this HRESULT is this: hrDiskFull concerns the file system; this code can occur while the volume still has free bytes. The first useful observation is to record database page size, current pages, configured maximum, free space, and the operation that needed growth. This this result 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 boundary | the database reached an engine-imposed growth ceiling rather than merely a full volume |
| First corrective direction | increase the supported database limit or compact/archive data using the owning application, then validate growth |
Questions the logs must answer
A useful trace for this HRESULT should preserve the first failing operation and the state of the bounded engine, process, and storage resources.
- Code-specific observation: record database page size, current pages, configured maximum, free space, and the operation that needed growth.
- 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; 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 it rather than with a later generic exception.
Log lengths, hashes, IDs, flags, and redacted samples where appropriate.
Response and verification
- Freeze the failing request context and record it,
0xC80003F4, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: record database page size, current pages, configured maximum, free space, and the operation that needed growth.
- Apply the narrow correction: increase the supported database limit or compact/archive data using the owning application, then validate growth.
- Before retrying it, reconcile resource counts, owner cleanup, and capacity after the correction.
- confirm both the returned HRESULT and the resulting database, cursor, or file state; then add a regression test that forces the old boundary and proves cleanup leaves no stale handles.
Developer-facing acceptance test
Distinguishing signals
For this HRESULT, hrDiskFull concerns the file system; this code can occur while the volume still has free bytes. The following neighboring results belong to the same broad subsystem but mark different boundaries:
hrOutOfCursors | the process exhausted table cursor resources because cursors were opened faster than they were closed |
|---|---|
hrOutOfFileHandles | the engine could not obtain another operating-system file handle for database work |
hrOutOfBuffers | the database page cache could not supply another usable buffer for the requested work |
Keep it in the incident record; replacing it with “database error” hides whether the next step is handle renewal, schema correction, lock reconciliation, or file preservation.
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 — used to verify the ESE object model, API ordering, or error family relevant to it.
- 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.
