| Предыдущий | Следующий |
| hrTableDuplicate | hrObjectNotFound |
hrTableInUse
Что означает hrTableInUse
hrTableInUse (0xC8000518) — не удалось заблокировать таблицу: она уже используется.
Что проверить
Зафиксируйте базу, таблицу или сессию ESE и первый API Jet/ESENT, который вернул hrTableInUse.
- Проверьте состояние базы и журналов ESE, свободные ресурсы процесса и состояние активной транзакции именно в момент отказа.
- Если ошибка возникла при восстановлении или работе с журналами, сопоставьте поколения журналов, контрольную точку и выбранный набор файлов; не подменяйте восстановление простым повтором операции.
- Определите, кто владеет ресурсом в момент hrTableInUse, и ожидается ли это по контракту API. Закройте или завершите только конфликтующую операцию; принудительное снятие блокировки без понимания владельца может повредить состояние.
Исходная формулировка
open cursors or operations prevent an exclusive table change.
Typical API surface — JetOpenTable, JetCreateTableColumnIndex, JetDeleteTable, and schema enumeration APIs
First corrective direction — close all users of the table and perform schema changes under a controlled exclusive window
hrTableDuplicate — table creation reused a name already present in the database
Object existence should be compared with the full expected definition before a migration is skipped., a JET_TABLEID is a cursor-like handle owned by a session, not a persistent table identifier.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.