| Предыдущий | Следующий |
| hrTableLocked | hrTableInUse |
hrTableDuplicate
Что означает hrTableDuplicate
hrTableDuplicate (0xC8000517) — таблица уже существует.
Что проверить
Зафиксируйте базу, таблицу или сессию ESE и первый API Jet/ESENT, который вернул hrTableDuplicate.
- Проверьте состояние базы и журналов ESE, свободные ресурсы процесса и состояние активной транзакции именно в момент отказа.
- Если ошибка возникла при восстановлении или работе с журналами, сопоставьте поколения журналов, контрольную точку и выбранный набор файлов; не подменяйте восстановление простым повтором операции.
- Проверьте уже существующий объект и его параметры до создания или регистрации нового. Для hrTableDuplicate обычно безопаснее сделать операцию идемпотентной либо явно обновить существующий объект, чем создавать дубликат.
Практический смысл и диагностика
- Создание table использует имя, которое уже существует в этой ESE database.
- Проверьте schema APIs `JetOpenTable`, `JetCreateTableColumnIndex`, `JetDeleteTable` и enumeration, чтобы увидеть фактический существующий object.
- `hrTableInUse` означает, что open cursors/operations мешают exclusive change; это не duplicate-name condition.
- `hrObjectDuplicate` шире и может относиться к другим object classes; здесь collision относится именно к table.
- Сделайте schema migration idempotent: перед create сравните существующее определение table с ожидаемой schema, а не игнорируйте код вслепую.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
