| Previous | Next |
| ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION | ERROR_TRANSACTION_OBJECT_EXPIRED |
ERROR_TRANSACTION_NOT_ROOT
Only the root transaction can acquire the requested superior enlistment
ERROR_TRANSACTION_NOT_ROOT belongs to the Windows Kernel Transaction Manager transaction-processing model. Distributed transaction trees distinguish a root transaction manager from subordinate branches. A superior enlistment establishes the relationship to a superior coordinator. Microsoft documents that a transaction manager can be subordinate to another and superior to further branches, but the particular operation that creates a superior enlistment must target the appropriate root transaction object for that relationship.
Trace how the transaction was imported or propagated and which local object is passed to the superior-enlistment call. Code can accidentally use a branch transaction returned by propagation when it intends the locally created root transaction. Compare root and branch IDs and log the coordinator roles at each hop. Retrying with the same subordinate transaction cannot change its place in the transaction tree; the propagation logic must select the correct root or create the branch relationship at the correct coordinator layer.
What to inspect
- Map the superior and subordinate transaction-manager roles for the transaction tree.
- Log the transaction ID used to create the superior enlistment.
- Do not treat local branch and root transaction objects as interchangeable.
References
- Microsoft: superior transaction managers and superior enlistments
- MS-DTCO: superior and subordinate transaction-manager roles
- MS-DTCO: subordinate branch registration and two-phase commit
Looking for a different code? Search another status or error code.