Что означает код HRESULT 0xC80005E1 (hrColumnIndexed)?

 
Предыдущий Следующий
hrNullInvalid hrColumnTooBig

hrColumnIndexed

Что означает hrColumnIndexed

hrColumnIndexed (0xC80005E1) — столбец нельзя удалить, поскольку он входит в индекс.

Это старый HRESULT-вариант результата ESE (Extensible Storage Engine, ESENT); в JET API соответствующее условие известно как JET_errColumnIndexed.

Что проверить

  • Проверьте актуальную схему: JET_COLUMNID, тип, максимальную длину, NULL-ограничения и tagged/multivalued флаги. После изменения схемы старые идентификаторы использовать нельзя.
  • Для чтения/записи сохраните длину значения, размер буфера и, для многозначного поля, itagSequence. NULL, пустое значение и отсутствующий экземпляр различаются.

Практический смысл и диагностика

  • Column нельзя удалить, потому что один или несколько ESE indexes всё ещё ссылаются на неё.
  • `hrColumnInUse` шире; `hrColumnIndexed` конкретно указывает на index dependency в delete-column path.
  • Сначала удалите либо перестройте dependent indexes, используя rollback-safe schema migration.
  • Перечислите index segments и conditional columns, чтобы найти все indirect references на удаляемую column.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.