Что означает код HRESULT 0x8004D00E (XACT_E_NOTRANSACTION)?

 
Предыдущий Следующий
XACT_E_NOTCURRENT XACT_E_NOTSUPPORTED

XACT_E_NOTRANSACTION

Завершённый объект транзакции нельзя открыть заново

XACT_E_NOTRANSACTION означает, что транзакция достигла конечного исхода явно либо из-за тайм-аута, сбоя участника или действия инфраструктуры. Сохранившийся указатель интерфейса не означает, что транзакция остаётся активной, и его нельзя использовать для второй операции.

Запишите самое раннее уведомление о commit, abort или timeout и найдите код, сохранивший контекст транзакции после этого момента. Частый источник — асинхронные callbacks: работа, поставленная в очередь при активной транзакции, может выполниться после завершения. Для новой работы создайте новую транзакцию и добавьте в queued tasks проверку отмены или поколения, чтобы они не подключались к истёкшей единице работы.

Поля временной линии, выявляющие позднее использование

  • Время создания транзакции и конечного исхода.
  • Настроенный тайм-аут и фактическая длительность.
  • Callback или продолжение из очереди, использовавшее старый контекст.
  • Первый участник или запрос приложения, завершивший транзакцию.

Ссылки


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