What does HRESULT 0xC80000CA (hrBFInUse) mean?

 
Previous Next
hrTooManyIO hrPMRecDeleted

hrBFInUse

Where the workflow stopped

hrBFInUse means the caller attempted to abandon or repurpose a buffer page that still has an active owner or dependency.

The stored value is 0xC80000CA (negative JET error -202; -202). The legacy symbolic name comes from the Windows Directory Service backup/restore message header.

The first useful distinction is that this is an ownership conflict, not the cache-miss warning hrBFPageNotFound. Start by recording page identity, latch/reference counts, cursor and transaction owners, dirty state, and the operation requesting abandonment.

Similar-looking outcomes

This result specifically means that this is an ownership conflict, not the cache-miss warning hrBFPageNotFound. Related values below can appear in the same workflow but require a different response:

hrDeleteBackupFileFailbackup cleanup could not delete an artifact it was responsible for removing
hrLogBufferTooSmallthe available recovery log buffer cannot hold the log record or sector data required for replay
hrRestoreMapExistsa restore map is already registered for the component while the caller attempts to add another mapping

Objects and state involved

Diagnostic layerbuffer-page ownership, dependencies, dirty state, and safe release
Relevant API surfaceinternal ESE buffer-manager work beneath cursor and transaction operations
Code-specific conditionthe caller attempted to abandon or repurpose a buffer page that still has an active owner or dependency
Narrow corrective directionrelease the legitimate owner through normal cursor or transaction cleanup before attempting buffer disposal

A buffer can be in use because of a legitimate cursor, transaction, latch, or I/O dependency. Forcing release around the engine breaks ownership invariants.

Minimum useful trace

  • Code-specific observation: record page identity, latch/reference counts, cursor and transaction owners, dirty state, and the operation requesting abandonment.
  • Page and database identity: capture the value and timestamp from the first occurrence.
  • Owner/reference state: capture the value and timestamp from the first occurrence.
  • Dirty and I/O status: capture the value and timestamp from the first occurrence.
  • Cursor/transaction lifetime: capture the value and timestamp from the first occurrence.

Steps to resolve it

  1. Record it, 0xC80000CA, the API name, the current phase, and all live context or file owners.
  2. Verify the condition by recording page identity, latch/reference counts, cursor and transaction owners, dirty state, and the operation requesting abandonment.
  3. Apply only the targeted fix: release the legitimate owner through normal cursor or transaction cleanup before attempting buffer disposal.

Actions that can make diagnosis worse

  • Do not force-close the underlying database file to release one buffer.
  • Do not treat ownership as physical page corruption.

Acceptance criteria for a fix

A useful regression test should force the condition “the caller attempted to abandon or repurpose a buffer page that still has an active owner or dependency”, call one documented API transition, and assert the exact HRESULT.

Technical references


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