Transaction State Resolution After System Failure
The DTC is designed to ease failure recovery for distributed applications, where failure can occur at the client, the server, and in the network connection between them. An important part of transaction management is resolving situations in which a transaction was left in an unresolved state after a system failure.
The DTC automatically resolves most transactions that stream across the system. Occasionally, however, some systems cannot reconnect during recovery, leaving unresolved transactions, or in another scenario, a faulty application program can cause transactions to get "stuck." The following states indicate that a distributed transaction is stuck or unresolved: In Doubt, Cannot Notify Abort, and Cannot Notify Commit. You can resolve these states by right-clicking the affected transaction in the Transaction List window of the Component Services administrative tool, pointing to Resolve, and then clicking one of the following commands:
Commit—Forces the transaction to commit.
Abort—Forces the transaction to abort and roll back to its original state.
Forget—Deletes a committed or aborted transaction from the DTC log.
You can use the Component Services administrative tool on your system to specify a time-out period within which transactions are automatically aborted if they do not complete. (The default transaction time-out period is 60 seconds.) This allows you to prevent incorrectly written transaction programs from acquiring and holding transactional resources indefinitely. For example, the records that a transaction updates in a Microsoft SQL Server database are locked for the duration of the transaction. If the transaction program loops or deadlocks, the transaction time-out prevents the database records from being held too long.