| Previous | Next |
| XACT_E_NOTCURRENT | XACT_E_NOTSUPPORTED |
XACT_E_NOTRANSACTION
A completed transaction object cannot be reopened
XACT_E_NOTRANSACTION means the transaction has reached a terminal outcome, either explicitly or because a timeout, participant failure, or framework action completed it. A surviving interface pointer does not imply that the transaction remains active, and it cannot be reused for a second operation.
Record the earliest commit, abort, or timeout notification and locate code that retained the transaction context beyond that point. Asynchronous callbacks are a common source: work queued while the transaction was active may execute after completion. Start a new transaction for new work and ensure queued tasks carry a cancellation or generation check so they do not enlist against an expired unit of work.
Timeline fields that expose late transaction use
- Transaction creation and terminal-outcome timestamps.
- Configured timeout and actual duration.
- Queued callback or continuation that used the old context.
- First participant or application request that completed the transaction.
References
- Microsoft MS-DTCO: active and completion phases
- Microsoft MS-DTCO: terminal outcome distribution
- IETF: transaction completion and coordinator roles
Looking for a different code? Search another status or error code.