What does HRESULT 0xC8000579 (hrIndexCantBuild) mean?

 
Previous Next
hrInvalidObject hrIndexHasPrimary

hrIndexCantBuild

Interpretation in ESE terms

hrIndexCantBuild means ESE cannot construct the requested clustered index from the existing table and definition.

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

The key comparison is: hrIndexInvalidDef rejects the definition before or during validation; this code can arise while materializing it. The first useful observation is to capture duplicate/null keys, row count, key widths, locale, temporary-space use, and the first failing row if available. This evidence separates index schema, current-index cursor state, key construction, and duplicate data.

The ESE objects in play

Diagnostic layerB-tree index definition, key construction, uniqueness, and current-index cursor state
Typical API surfaceJetCreateIndex, JetDeleteIndex, JetSetCurrentIndex, JetMakeKey, JetSeek, and JetSetIndexRange
Code-specific conditionESE cannot construct the requested clustered index from the existing table and definition
First corrective directionclean incompatible data or build into a new table, preserving the original until validation succeeds

Clustered, primary, and unique properties must be interpreted from the actual index flags. Index schema and runtime key-building state are separate diagnostic layers.

Comparison with adjacent failures

hrTooManyKeysan index definition contains more key segments than the engine accepts
hrIndexDuplicatean index with the requested name or equivalent definition already exists
hrTooManyIndexesa table schema attempted to exceed the supported number of indexes

What to capture before retrying

  • Code-specific observation: capture duplicate/null keys, row count, key widths, locale, temporary-space use, and the first failing row if available.
  • the current index plus every JetMakeKey segment and grbit.
  • the encoded key and existing row when uniqueness is involved.
  • the raw index key definition, flags, locale, and conditional columns.

Actions that can hide or worsen the problem

  • Do not drop or rebuild an index before checking uniqueness and table-layout dependencies.
  • Do not treat a key-construction or duplicate-key result as database-file corruption.

Operational response

  1. Freeze the failing request context and record 0xC8000579, the Jet API name, and the current instance/session ownership.
  2. Verify the code-specific precondition: capture duplicate/null keys, row count, key widths, locale, temporary-space use, and the first failing row if available.
  3. Apply the targeted fix: clean incompatible data or build into a new table, preserving the original until validation succeeds.
  4. Before retrying the operation, reconcile index definition, selected cursor index, and key or uniqueness outcome.

Technical references


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