| Previous | Next |
| XACT_E_WRONGUOW | XACT_E_NOIMPORTOBJECT |
XACT_E_XTIONEXISTS
Duplicate enlistment usually signals reused provider or connection state
XACT_E_XTIONEXISTS indicates that code attempted to create an enlistment where one is already active. This can occur when an auto-enlisting provider is also enlisted manually, when initialization runs twice, or when a pooled connection retains its association with the ambient transaction.
Determine which layer owns enlistment. If the provider automatically joins ambient transactions, remove the redundant explicit enlist call rather than ignoring the HRESULT. For custom resource managers, key enlistments by both transaction identity and resource instance, and make initialization idempotent. Multiple logical operations may share one enlistment, but they must not create competing protocol objects for the same branch.
Duplicate-enlistment indicators
- Automatic versus explicit enlistment settings.
- Connection-pool checkout and reset history.
- Transaction ID already mapped to the resource instance.
- Call stacks of the original and duplicate enlist requests.
References
- Microsoft: creating a resource-manager enlistment
- Microsoft MS-DTCO: enlistment responsibilities
- The Open Group: XA resource branches and association
Looking for a different code? Search another status or error code.