New transaction cannot enlist in specified transaction coordinator

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
-->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.


Comments (18)
  1. Carlos says:

    This tool shows which process owns each TCP and UDP port:

    It’s very useful.

  2. Fernando Tubio says:

    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.

  3. Nihit Kaul says:

    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.

  4. Fernando Tubio says:

    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.

  5. Nihit Kaul says:

    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!

  6. veer ji says:

    Thanks Nihit U are saving my day if it works

  7. Nitin says:


      I am getting the same error. I tried using the workaround of adding more ports. But I am strill getting this error.

  8. Rachel Collingridge says:

    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.

  9. Ross Meeks says:

    Make sure you enable new XP SP2 security settings in MSDTC.  Under Component ServicesMy ComputerPropertiesMSDTCSecurity.

  10. Stefan Vestergaard says:

    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?

  11. ducuboy says:

    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.

  12. CJ Butcher says:

    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.


  13. 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

  14. KM Walker says:

    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 –

    MS article


  15. SBrown says:

    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.

  16. Thiago says:

    If your ambient is Development, so simply try to change the Require transaction option from the Transaction tab from the component property. Try this when you do not need transaction context in development time.

  17. In Hyderabad says:

    hmm, no luck, your sugggestions did not work for me for my win 2k server. I still get the error. One setting that I found to be different  is the Default Impeorsantion level which is set to Identity on the machine(PROD) I am getting error and anonymous on the machine(DEV) where it is working fine. Any inputs?

  18. Habeeb says:

    Hi all. Similarly tried to insert into lcl.tableA select from linkedsrvr.tableB, and had this error. lcl.TableA had a trigger.

    Used a select into statement (from lkdsrvr.tableB into lcl.tableC) then went from TableC into TableA successfully.

    Methinks the trigger is the culprit in my instance.

    Kind regards H

Comments are closed.

Skip to main content