Troubleshooting and Resolving Transactions
Updated: April 11, 2008
Applies To: Windows Server 2008
As a transaction occurs in the Microsoft Distributed Transaction Coordinator (MS DTC), the Component Services administrative tool tracks the progress of the transaction as a set of states. You can use these states to monitor transactions and to manually resolve transactions that are stuck in intermediate states, such as In Doubt, Cannot Notify Commit, Cannot Notify Abort, and so on.
Before you resolve a transaction in an intermediate state, you have to take necessary precautions not to cause any potential data corruption. For information about how to resolve transactions and what to look for to avoid data corruption, see Resolve Transactions Manually.
The following states are possible for a transaction:
- The transaction has aborted. All participants have been notified or are not accessible. After a transaction aborts, it is immediately removed from the list of transactions in the Transaction List dialog box. It is not possible to change the transaction outcome at this point.
- The transaction has started and is under way. It is not possible to change the transaction outcome at this point.
- Cannot Notify Abort
- The commit coordinator has notified all connected subordinates that the transaction has aborted. However, an LU 6.2 transaction manager is enlisted in the transaction, the connection to that transaction manager has failed, and the abort notification cannot be delivered to that transaction manager.
- Cannot Notify Commit
- The commit coordinator has notified all connected participants that the transaction has committed. However, some subordinates cannot be notified that the transaction has committed because they are not accessible. In this case, each affected subordinate transaction manager probably has the same transaction listed as In Doubt because it has not yet received a Commit notification.
- The transaction has committed, and all participants have been notified. After a transaction commits, it is removed immediately from the list of transactions in the Transaction List dialog box. It is not possible to change the transaction outcome at this point.
- Forced Abort
- The administrator has forced the in-doubt transaction to abort. (See the definition for the In Doubt state.) It is not possible to change the transaction outcome at this point.
- Forced Commit
- The administrator has forced the in-doubt transaction to commit. (See the definition for the In Doubt state.) It is not possible to change the transaction outcome at this point.
- In Doubt
- The transaction is prepared, but the outcome of the transaction is unknown because the remote transaction manager that is acting as the commit coordinator is not accessible. The commit coordinator may be either a DTC transaction manager on another computer or a transactions manager from a source other than Microsoft. In either case, the DTC has lost communication with that transaction manager after preparing—but before being told—the transaction's outcome. The transaction remains prepared and in the In Doubt state until communication is restored with the superior transaction manager or the transaction is manually forced to abort or commit by the administrator. When you force a transaction's outcome, the transaction enters the Forced Commit or Forced Abort state.
- All transaction participants have responded that they are successfully prepared. It is not possible to change the transaction outcome at this point.
- The application has sent a commit notice to the transaction manager. The transaction manager has asked the resource managers and subordinate transaction managers to prepare, and it is waiting for them to acknowledge that they are prepared. It is not possible to change the transaction outcome at this point.
- This is the number of attempted transfers of a commit notification whose replies are lost and therefore cannot be counted as either Committed or Aborted.
This section includes the following tasks and procedures for managing distributed transaction states: