What does HRESULT 0xC80005E9 (hrColumnCannotIndex) mean?

 
Previous Next
hrInvalidColumnType hrTaggedNotNULL

hrColumnCannotIndex

Diagnostic focus

hrColumnCannotIndex means the selected long-value or otherwise unsupported column cannot participate in an index key.

This is the legacy Directory Service backup/restore HRESULT form of JET_errColumnCannotIndex (0xC80005E9).

The key comparison is: hrIndexInvalidDef is general; this code identifies the column capability that makes indexing impossible. The first useful observation is to record column type, maximum length, multivalue/tagged flags, and intended key segment. This evidence separates schema definition, row-size accounting, null semantics, multivalue selection, and stale column IDs.

The ESE objects in play

Diagnostic layercolumn schema, row-size accounting, tagged/multivalued storage, and column identifiers
Typical API surfaceJetAddColumn, JetDeleteColumn, JetSetColumn, JetRetrieveColumn, and JET_COLUMNDEF
Code-specific conditionthe selected long-value or otherwise unsupported column cannot participate in an index key
First corrective directionindex a bounded surrogate or normalized searchable field instead of the long payload

Fixed, variable, tagged, and long-value columns consume row space differently. Column IDs are metadata scoped to a table and should be refreshed after schema changes.

Evidence that resolves the ambiguity

  • Code-specific observation: record column type, maximum length, multivalue/tagged flags, and intended key segment.
  • the complete row-size contribution from fixed, variable, tagged, and long-value data; associate it with this result rather than with a later generic exception.
  • JET_COLUMNDEF fields, flags, code page, maximum length, and column ID origin; associate it with this result rather than with a later generic exception.
  • the encoded value length, null/empty state, and itag sequence.

Nearby results that mean something different

hrColumn2ndSysMaintthe table is being given a second engine-maintained autoincrement or version column
hrColumnDoesNotFitthe field update cannot fit in the current record layout and remaining row budget
hrCannotBeTaggedan autoincrement or version column was defined with tagged or multivalued semantics

A disciplined correction path

  1. Freeze the failing request context and record 0xC80005E9, the Jet API name, and the current instance/session ownership.
  2. Verify the code-specific precondition: record column type, maximum length, multivalue/tagged flags, and intended key segment.
  3. Apply the targeted fix: index a bounded surrogate or normalized searchable field instead of the long payload.
  4. Before retrying the operation, reconcile column metadata, row layout, and the exact stored value state.

Actions that can hide or worsen the problem

  • Do not alter the column schema in place without a migration and rollback plan.
  • Do not collapse null, zero-length data, missing value, and tagged-value deletion into one state.

Technical references


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