Что означает код HRESULT 0x80670009 (STATEREPOSITORY_E_LOCKED_RETRY)?

 
Предыдущий Следующий
STATEREPOSITORY_E_BUSY_RECOVERY_RETRY STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY

STATEREPOSITORY_E_LOCKED_RETRY

LOCKED_RETRY — это конфликт на уровне таблицы или connection sharing

0x80670009 сообщает о блокировке, при которой вызывающая сторона может повторить операцию после продвижения владельца lock. Он уже уже, чем BUSY_RETRY: доступность database file сама по себе не исключает table contention.

Что искать в trace

  • Таблицу и connection, на которых удерживается ownership.
  • Незавершённый prepared statement и transaction generation.
  • Порядок writers и момент, когда owning transaction реально освобождает lock.

Документация формулирует различие так: BUSY_RETRY is database-level contention; LOCKED_RETRY is a narrower table or connection-sharing conflict. Дополнительные connections не являются лечением и могут воспроизвести тот же цикл владения.

Контрольный эксперимент

Завершите или reset-ните statement-владельца, сериализуйте writers для той же таблицы и повторите запрос только после перехода transaction state. Успешный двухсоединительный тест должен не оставлять statement активным между несвязанными операциями.

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


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