New transaction cannot enlist in specified transaction coordinator

New transaction cannot enlist in specified transaction coordinator

  • Comments 18

Seems like my day was dedicated to this error message! Ran into it while setting up some tests and we just couldn't get to the bottom of it. Here are some of the more interesting things I discovered while looking into this issue.

For starters there is this very useful KB article which guides you through various DTC related issues and how to identify them. The tool mentioned (DTCPing) was useful in ironing out some other issues, but not the main problem. The fascinating part was that the tool almost passed - we got an innocuous looking error followed by a message of the RPC test being a success. Here is what the error message looked like:

Error(0x2AFC) at nameping.cpp @62
-->gethostbyaddr
-->183(Cannot create a file when that file already exists.)

Interestingly, a colleague pointed me to an article dedicated to this very innocent looking error message. Wonders never seize! J

Anyway – this too did not get us all the way. After more head banging (and trying stunts like attempting to uninstall/reinstall MSDTC (which in retrospect might not have been too good an idea, since it can seriously screw up the system)) what finally solved the issue was opening up of more ports through Component Services à My Computer Properties à Default Protocols à Connection Oriented TCP/IP à Properties.

P.S. - One tool which would be useful in Windows - something that showed what ports were open/closed and were being used by which applications/services etc. Maybe there is tool out there which actually does that – Anyone?

/*********************************************************************/

This posting is provided "AS IS" with no warranties, and confers no rights.

/*********************************************************************/
Leave a Comment
  • Please add 2 and 7 and type the answer here:
  • Post
  • This tool shows which process owns each TCP and UDP port:
    http://www.sysinternals.com/ntw2k/source/tcpview.shtml

    It's very useful.
  • Actually, NETSTAT.EXE is the tool which shows which ports are open. If I am not mistaken, starting with Windows XP, there is a new command line switch to display which application is responsible for opening each port.
  • Good stuff. TCPView defintely looks like a tool I will need to play with some more. Don't know about that Windows XP command line tool - haven't run into it as yet, so would be good to know about it.
  • Sorry if I wasn't clear enough about NETSTAT. This is part of the tcp/ip utilities supplied by the operating system. Just open a command prompt an type netstat -a to display all open connections and listening ports.
  • Ah - Yup - that seems to be nifty as well (Netstat). Will certainly help in getting an idea about what port ranges are being used etc. Thx!
  • Thanks Nihit U are saving my day if it works
  • Hi,
      I am getting the same error. I tried using the workaround of adding more ports. But I am strill getting this error.

  • I'm also getting the same problem - I've turned off the Firewall, checked all the appropriate settings in dcomcnfg.exe and can get DTCPing working.  But still my ASP test page cannot access the COM+ components.  Any more thoughts would be appreciated.

  • Make sure you enable new XP SP2 security settings in MSDTC.  Under Component Services\My Computer\Properties\MSDTC\Security.

  • how many port and what range? Been looking through netstat output, and i really dont have a clue which ports are being used be what... How large a range would be "ok"? Guess it depends on the traffic..?

    Could i just open like ports 50000-52000 and hope for the best?
  • I ran into the same s**t using BizTalk because the SQL Server is on a different srv.. I haven't figured it out yet.. Anyway, this is how you could use the netstat cmd:

    Q: How do I find the process for an active port?

    A: To find the process associated with a given active port in Microsoft Windows Server 2003 and Windows XP, you can locate the PID associated with the port by typing netstat -aon. You can then find the process associated with the PID by typing tasklist -FI "PID eq XX", where XX is the PID of the process.
  • I am having a similar problem...I get the error message when I run an update statement from server A that used a linked server to get data from server B.  However it only happens when I do an update tableA from linkedserver...tableB not if I do an insert tableA select * from linkedserver...tableB.

    I also don't get the error if I do an update tableC from linkedserver...tableB.

    Thoughts???
  • Hi CJ,

    That makes sense since the update command would most likely be running under a transaction but not the select command.

    I am not sure how to help you other than the mentioned DTCPing tests etc. If this is SQL 2005, I would post it to a SQL 2005 forum as well since it might be something specific (reminds me some "Allow Remote Connections" setting in SQL 2005 that I had to tweak for some other issue).

    - Nihit
  • System Internals is a great free ware site with very power full tools.  There TCPViewer will show you in realtime all ports currently active / what they are being used for and who they are connected to. I am expereicing the same problem and am yet to find an answer. However I believe this article is going in the right direction

    System Internals - Systeminternals.com

    MS article
    "http://support.microsoft.com/default.aspx?scid=kb;en-us;329332&Product=sql"
  • I have a DCOM component that has a method which creates an ADO transaction to insert and update tables in SQL Server 2000.  

    I recently attempted to add an INSERT and UPDATE trigger to the tables and immediately ran into this error.  The error resolved after deleting the triggers.

Page 1 of 2 (18 items) 12