Site icon EfmSoft

What does HRESULT 0x80040E22 (DB_E_NOAGGREGATION) mean?

 
Previous Next
DB_E_ERRORSOCCURRED DB_E_DELETEDROW

DB_E_NOAGGREGATION

Meaning

Windows documents DB_E_NOAGGREGATION as “Non-NULL controlling IUnknown was specified, and either the requested interface was not IUnknown, or the provider does not support COM aggregation”. Here, OLE DB object creation is requested with COM aggregation parameters the provider or requested interface cannot support.

Evidence to collect before changing the system

  • Evidence 1: pUnkOuter presence, requested IID and object type.
  • Evidence 2: provider documentation or properties for aggregation support.
  • Evidence 3: the exact creation method and returned interface request.

Relevant OLE DB contract

This result must be interpreted against this contract: OLE DB objects follow both COM lifetime rules and provider-specific state contracts; open dependents, ownership transfer, aggregation, callbacks and namespace identity must be traced from the exact interface call rather than inferred from a wrapper exception.

Start with the COM object that returned the result and every dependent interface or provider-owned resource involved in the call when investigating this result.

Specific conditions that produce it

  • Cause 1: pUnkOuter is non-NULL but the provider does not support aggregation for the object.
  • Cause 2: the requested interface is not IID_IUnknown during aggregated creation.
  • Cause 3: the outer object does not follow COM controlling-IUnknown rules.

Corrective actions

  • Action 1: pass NULL for pUnkOuter when aggregation is unnecessary.
  • Action 2: request IID_IUnknown first when COM aggregation rules require it.
  • Action 3: replace aggregation with containment when the provider does not support it.

Practical incident

A generic factory always supplies an outer unknown when opening rowsets, including providers that reject aggregation; using nonaggregated creation prevents it.

Retry and recovery policy

Retry rule: retry after correcting the COM creation parameters; provider state will not make an invalid aggregation request valid.

Difference from related HRESULT values

CLASS_E_NOAGGREGATION is the general COM class-factory result, while DB_E_NOAGGREGATION is returned from an OLE DB object-creation contract.

Official Microsoft references


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

Exit mobile version