Что означает код HRESULT 0xC8000454 (hrInTransaction)?

 
Предыдущий Следующий
hrSessionWriteConflict hrDatabaseDuplicate

hrInTransaction

Что означает hrInTransaction

hrInTransaction (0xC8000454) — операция запрещена внутри транзакции.

Это старый HRESULT-вариант результата ESE (Extensible Storage Engine, ESENT); в JET API соответствующее условие известно как JET_errInTransaction.

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

  • Проверьте состояние экземпляра, владельца JET_SESID и уровень транзакции. Handle другого или уже завершённого сеанса нельзя сделать действительным повтором той же операции.
  • Для API, разрешённого только внутри либо вне транзакции, сначала восстановите требуемое состояние сеанса и только затем повторяйте минимальный вызов.

Практический смысл и диагностика

  • Operation, допустимая только на transaction level zero, вызвана в ESE session с active transaction.
  • `hrNotInTransaction` — обратный precondition: operation требует active transaction.
  • Проверьте balance `JetBeginSession`, `JetBeginTransaction`, `JetCommitTransaction`, `JetRollback` и update APIs.
  • `hrInvalidSesid` означает stale/foreign session handle и не объясняет корректную session, находящуюся в неправильном transaction state.

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


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