COM+ Exception-The transaction has already been implicitly or explicitly committed or aborted
When we are using SQL server 2000 on Windows server 2003 machine and application on Windows XP/Professional and changed machine location,the same application which was running previously,started giving the above error.After lots of search, we found that the problem resulted due to change of IP address/ Port or domain of client machine on which application is hosted. What was happening - MSDTC on client system was able to communicate with MSDTC on database server but vice versa was not possible as the DNS setting is yet not reflected in DB server. This will take some time to reflect,therefore Windows server 2003’s MSDTC check for the previous IP/domain and fails to respond resulting in above error. The solution is - Either restore the IP address to original OR wait for around 24 hrs ..it will solve the problem.
Here is KB:MSDTC fails to mutually authenticate when computers do not run in the same domain explaining the Mutual authentication failure when running application and Database server on different domains.
Also if you are running your application on Windows XP with SP2 applied, check for the proper configuration for MSDTC. Here is a documentation at Microsoft Technet: Changes to Functionality in Microsoft Windows XP Service Pack 2 Any comments welcome !!
Read More Articles

Comments
We are migrating code from a web application from Windows XP and VS2005 beta 2 to Windows Server 2003 and the VS2005 november release. We have the SQL Server in a different server machine. The code on the XP platform works properly and on Server 2003 we the raising exception message we have is “The transaction has already been implicitly or explicitly committed or aborted”.
The code is like this:
using (TransactionScope ts = new TransactionScope())
{
TableAdapter1 ta1 = new TableAdapter1();
TableAdapter2 ta2 = new TableAdapter2();
try
{
ta1.Update(dataset);
ta2.Update(dataset);
ts.Complete();
dataset.AcceptChanges();
return true;
}
catch
{
dataset.RejectChanges();
}
finally
{
ts.Dispose();
}
}
where ta1 and ts2 are generic table adapters and dataset is a generic typed dataset.
The exception stack trace (with real class and method names) is
System.Transactions.TransactionException was caught
Message=”The transaction has already been implicitly or explicitly committed or aborted.”
Source=”System.Data”
StackTrace:
at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
at TSORDataAccess.BudgetDSTableAdapters.BudgetUnitHeadingsTableAdapter.Update(BudgetDS dataSet) in C:projectsmysystemTSORSolutionTSORDataAccessBudgetDS.Designer.cs:line 8671
at TSORClassLibrary.BudgetUnitHeadingOutput.UpdateAmountsToDB(AvailableDataBasesRow adbr) in C:projectsmysystemTSORSolutionTSORClassLibraryBudgetUnitHeadingOutput.cs:line 354
Do you know the solution for this trouble?
Thanks.
Comment by Jesús — November 21, 2005 @ 5:33 pm
Do following steps:
1) Go to C:WINDOWSsystem32driversetc on Server 2003.
2) Open hosts file and manually edit the IP address of your computer
Wait for 5 minutes for the settings to take effect..
I think this will work ..
Comment by Parmeshwar — January 7, 2006 @ 7:01 am
sometime the exception also occurs when we start a COM+ transaction inside a transaction,and exception occurs in inner transaction(Both transactions are on for AutoComplete attribute) .
Comment by parmeshwar — March 5, 2006 @ 12:41 pm
Thanks. This post was helpful for me to identify the DTC issue on my machine.
Comment by Chaitali — October 26, 2007 @ 12:24 am
’sometime the exception also occurs when we start a COM+ transaction inside a transaction,and exception occurs in inner transaction(Both transactions are on for AutoComplete attribute) .’ - In such case, what should be done to overcome the exception.
Comment by harish — April 16, 2008 @ 6:49 pm
Modifying the host file didnt help either. Its throwing teh same error and i m stuck fopr a long time now.I have made all DTS setting configurtion on both server and client and also explicitly enabled the dts transactions on the desired database…
My code is simple and i m not able to resolve teh issue
try
{
Comment by Sudheer G — July 12, 2008 @ 3:11 pm