| 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 layer | B-tree index definition, key construction, uniqueness, and current-index cursor state |
|---|---|
| Typical API surface | JetCreateIndex, JetDeleteIndex, JetSetCurrentIndex, JetMakeKey, JetSeek, and JetSetIndexRange |
| Code-specific condition | ESE cannot construct the requested clustered index from the existing table and definition |
| First corrective direction | clean 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
hrTooManyKeys | an index definition contains more key segments than the engine accepts |
|---|---|
hrIndexDuplicate | an index with the requested name or equivalent definition already exists |
hrTooManyIndexes | a 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
- Freeze the failing request context and record
0xC8000579, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: capture duplicate/null keys, row count, key widths, locale, temporary-space use, and the first failing row if available.
- Apply the targeted fix: clean incompatible data or build into a new table, preserving the original until validation succeeds.
- 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.