Что означает код HRESULT 0xC8000518 (hrTableInUse)?

 
Предыдущий Следующий
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.

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


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