Что означает код HRESULT 0x8067000B (STATEREPOSITORY_E_TRANSACTION_REQUIRED)?

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

STATEREPOSITORY_E_TRANSACTION_REQUIRED

Что означает результат

STATEREPOSITORY_E_TRANSACTION_REQUIRED: Запрошенная операция State Repository должна выполняться внутри транзакции, но вызывающий код не предоставил действующий transaction context. Это нарушение API contract.

Что проверить

  • Зафиксируйте метод и последовательность Begin/Commit/Rollback вокруг него.
  • Проверьте, что transaction object относится к тому же connection/session, где выполняется операция.
  • Не используйте context после commit или rollback и не переносите его между независимыми владельцами.
  • Если API имеет read-only и transactional variants, убедитесь, что выбран правильный вариант для изменяющей операции.

Диагностика и исправление

Создайте транзакцию в требуемом scope, выполните операцию и завершите её штатным commit/rollback. Retry того же вызова вне транзакции всегда воспроизведёт результат.

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


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