Что означает код HRESULT 0xC800051C (hrTableNotEmpty)?

 
Предыдущий Следующий
hrDensityInvalid hrInvalidTableId

hrTableNotEmpty

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

hrTableNotEmpty (0xC800051C) — не удалось определить кластеризованный индекс: таблица не пустая.

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

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

  • Зафиксируйте текущий индекс, его сегменты и флаги, а также фактически построенный ключ. Ошибка определения индекса отличается от ошибки позиции курсора или конфликтующего ключа.
  • После изменения индексируемых столбцов заново проверьте позицию курсора; для unique/primary индекса отдельно исследуйте ключ конфликтующей записи.

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

  • ESE schema/structural operation требует пустую table, но в ней уже существуют rows.
  • Это отличается от table-in-use: здесь препятствие — содержимое, а не только открытые cursors или competing operations.
  • Сохраните table name, row count и конкретный Jet schema API/flags перед вызовом; проверьте, не создаётся ли clustered layout после загрузки данных.
  • Выполните structural change до вставки rows либо перенесите данные через поддерживаемую rebuild/migration procedure вместо повторения несовместимой операции на непустой table.

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


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