| Предыдущий | Следующий |
| XACT_E_NOTCURRENT | XACT_E_NOTSUPPORTED |
XACT_E_NOTRANSACTION
Завершённый объект транзакции нельзя открыть заново
XACT_E_NOTRANSACTION означает, что транзакция достигла конечного исхода явно либо из-за тайм-аута, сбоя участника или действия инфраструктуры. Сохранившийся указатель интерфейса не означает, что транзакция остаётся активной, и его нельзя использовать для второй операции.
Запишите самое раннее уведомление о commit, abort или timeout и найдите код, сохранивший контекст транзакции после этого момента. Частый источник — асинхронные callbacks: работа, поставленная в очередь при активной транзакции, может выполниться после завершения. Для новой работы создайте новую транзакцию и добавьте в queued tasks проверку отмены или поколения, чтобы они не подключались к истёкшей единице работы.
Поля временной линии, выявляющие позднее использование
- Время создания транзакции и конечного исхода.
- Настроенный тайм-аут и фактическая длительность.
- Callback или продолжение из очереди, использовавшее старый контекст.
- Первый участник или запрос приложения, завершивший транзакцию.
Ссылки
- Microsoft MS-DTCO: активная фаза и завершение
- Microsoft MS-DTCO: распространение конечного исхода
- IETF: завершение транзакций и роли координатора
Нужно найти другой код? Найти другой код состояния или ошибки.