4

I've recently had an issue where MSDTC was unable to start up.

The error in the command line when running net start msdtc indicated that there were configuration issues.
I went into the registry and set the configuration settings to the same values as a default installation of MSDTC.

Afterwards, MSDTC was able to start up, however the local dtc seems to be missing in the component services.

Master of Hide and Seek!

I've since followed the steps here.

  1. net stop msdtc
  2. msdtc -uninstall
  3. msdtc -install
  4. net start msdtc

And the steps here.
Which is the similar procedure as above only with also deleting the registry configuration.

I've also put back a registry backup and rebooted.
And rebooted after reinstalling.

So far no matter what, the local dtc is hiding from me.
Does anyone know what might be wrong here, and how to reinstall the local dtc?

UPDATE:
As I was trying to find more ways of installing the local dtc, I found out that the Powershell Commandlets are actually entirely missing.

If anyone has a solution/cause for this, that might help me along.

UPDATE 2:
By request on a different thread I redid the procedure, making sure the prompt was ran as administrator.
After running the commands the following events are found in event viewer:

The Microsoft Distributed Transaction Coordinator service was successfully removed.
The Microsoft Distributed Transaction Coordinator service was successfully installed.

Update 3:
I've found that the very first time the Component Services is opened after a fresh install, and the Distributed Transaction Coordinators folder is clicked the following error appears in the application log:

The MS DTC Connection Manager is unable to register with RPC to use one of LRPC, TCP/IP, or UDP/IP.
Please ensure that RPC is configured properly. If "ServerTcpPort" registry key is configured(DWORD value under the HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC for local DTC instance or under cluster hive for clustered DTC instance), please verify if the configured port is valid and the port is not already in use by a different component.
Error Specifics:hr = 0x80070057, d:\w7rtm\com\complus\dtc\dtc\cm\src\iomgrsrv.cpp:2523, CmdLine: "C:\Windows\system32\mmc.exe" "C:\Windows\system32\comexp.msc" , Pid: 6096

Which seems to point to a firewall problem, but completely disabling the firewall and starting the procedure from step 1 did not help.

I'm starting to believe the only available option is nuking the server from orbit.

Reaces
  • 5,627

1 Answers1

0

If you configure a small RPC port range it may be fully occupied and MSDTC cannot get a port as all ports are in use. I would remove this RPC limitation and use default dynamic port range 49152-65535.

If you configure MSDTC to use a fixed port with ServerTcpPort it may be best to reserve this port and avoid using a port in the dynamic RPC range to avoid other applications taking this port before MSDTC is started. E g they get assigned ports from default port range is 49152-65535 and MSDTC is configured to use e g port 50000. I usually recommend to put local MSDTC to use fixed port below dynamic range, but well above known lower ports, e g 30001 (ServerTcpPort + reservation) and then clustered MSDTCs fixed ports at 30002+. Then you can also filter in network traces to troubleshoot quickly instead of having new dynamic port all the time.

r4v3n6
  • 11
  • 2