Что означает код HRESULT 0x8067000E (STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED)?

 
Предыдущий Следующий
STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED

STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED

Table-level ownership не разрешилось в допустимое время

0x8067000E — терминальный вариант table/connection locking: retry window исчерпан. Он отличается от BUSY_TIMEOUT_EXCEEDED, который относится к database-file contention.

Evidence в момент тайм-аута

  • Снимите список active statements и connection owners.
  • Зафиксируйте transaction dependency graph и thread stacks.
  • Сохраните timeout value и порядок, в котором writers получают ownership.

Точная граница в документации: BUSY_TIMEOUT_EXCEEDED concerns database-file contention; LOCKED_TIMEOUT_EXCEEDED is narrower table/connection ownership. Добавление worker threads в lock cycle только увеличивает неопределённость.

Восстановление

Разорвите transaction-order cycle и гарантируйте finalize statements на каждом exception path. После исправления стресс-тест с двумя writers должен завершаться bounded transactions без достижения table-lock timeout.

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


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