The COM+ application 'eConnect' is unable to complete distributed transactions successfully against the SQL server. It fails with the error :
(0x8004E002): The root transaction wanted to commit, but transaction aborted.
The eConnect COM+ application tries to send xml data to the SQL server on another server. Both the servers are Windows 2008. It runs for a while and then comes back with the error message :
System.Runtime.InteropServices.COMException (0x8004E002): The root transaction wanted to commit, but transaction aborted (Exception from HRESULT: 0x8004E002)at System.EnterpriseServices.IRemoteDispatch.RemoteDispatchNotAutoDone(String s)at System.EnterpriseServices.RemoteServicedComponentProxy.Invoke(IMessage reqMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)at Microsoft.Dynamics.GP.eConnect.eConnectMethods.eConnect_EntryPoint(String ConnectionString, ConnectionStringType ConnectionType, String sXML, SchemaValidationType ValidationType, String eConnectSchema)at DirectDocSenderDotNet.FrmDocSender.btnSend_Click(Object sender, EventArgs e) in C:\program files\Common Files\microsoft shared\eConnect 10\eConnect Samples\CSHARP DirectDocSender\frmDocSender.cs:line 379
Checked the DTC security settings under component services --> computers --> My computer --> local dtc --> security. Enabled Network DTC access and the other options :
Allow remote clientsAllow remote administrationsAllow inboundAllow outboundNo authentication required
Enabled the same options on the SQL Server machine. Still the transaction would run for a while and then abort. The global transaction timeout of DTC was set to 360 seconds under component services --> computers --> My computer --> properties --> Options. Configured the same timeout on SQL server box. Still no luck. We checked the C:\windows\system32\DTCTrace.log file and found that the transactions were being aborted by the SQL server box.
We checked the transaction timeout on the COM+ components and they were set to 120 seconds. Changed them to 360 on all the transactional components. Ran the transaction and now it completed successfully.