Site icon EfmSoft

What does HRESULT 0x8004D00B (XACT_E_NOISORETAIN) mean?

 
Previous Next
XACT_E_NOENLIST XACT_E_NORESOURCE

XACT_E_NOISORETAIN

XACT_E_NOISORETAIN is the failure HRESULT 0x8004D00B (signed decimal -2147168245, unsigned decimal 2147799051). Its severity bit is 1, facility is 4 (FACILITY_ITF), and the facility-specific code field is 0xD00B.

Retaining commit or abort cannot preserve the requested isolation semantics

This HRESULT rejects requested isolation-retention semantics across a retaining commit or abort boundary. Microsoft also documents it when the isolation flag input is not zero for contracts that require zero. The failure concerns the next transaction boundary, not the validity of every isolation level.

AllStat records the Windows message as: “The requested semantics of retention of isolation across retaining commit and abort boundaries cannot be supported by this transaction implementation, or isoFlags was not equal to zero.” This text should be interpreted at the transaction stage described below rather than as a generic COM failure.

The contract boundary to identify

A retaining completion ends one unit of work while automatically continuing with another transaction on the same session. The implementation must decide what isolation state carries across that boundary. If it cannot honor the requested retain behavior, it must fail rather than silently weaken concurrency guarantees.

Likely causes to separate

Evidence worth preserving

Diagnostic sequence

Retry and recovery

Prefer a nonretaining boundary followed by an explicit new transaction whose isolation is set and checked independently. Retrying unchanged retain flags will not help. Do not simply lower isolation to suppress the HRESULT because that may introduce nonrepeatable reads or other correctness defects.

What this HRESULT does not establish

This result does not say the requested isolation level itself is unsupported; that is XACT_E_ISOLATIONLEVEL. It also does not prove that the current transaction has committed or aborted.

Difference from nearby transaction results

XACT_E_CANTRETAIN concerns inability to retain the transaction generally. XACT_E_NOISORETAIN is specifically about retaining isolation semantics or invalid isolation flags.

Practical scenario

An OLE DB component commits with retain enabled and expects the next unit of work to inherit the same isolation state. The provider rejects that contract. The component changes to nonretaining commit, starts a fresh transaction, and verifies the isolation level before issuing new commands.

Guidance for software and telemetry

Log retention and isolation as separate fields. Code reviews should treat a retaining transaction as a new state transition with explicit guarantees, not as a convenient shorthand for two independent calls.

Official Microsoft references


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

Exit mobile version