Learn how to configure the Microsoft Distributed Transaction Coordinator (MSDTC) Windows Service
Nodinite ensures data integrity and reliable outcomes for all client-server operations by leveraging the Microsoft Distributed Transaction Coordinator (MSDTC) Windows Service. This guide explains how to configure MSDTC for secure, scalable, and high-performance distributed transactions in your integration landscape.
✅ Guarantee data integrity for all distributed transactions
✅ Support for SQL Server, BizTalk, message queues, and more
✅ Step-by-step configuration for all Windows Server environments
✅ Troubleshooting tips and best practices for enterprise-grade reliability
Important
You must enable and configure the Microsoft Windows Distributed Transaction Coordinator for use with Nodinite as detailed on this page.
The Distributed Transaction Coordinator (DTC) service coordinates transactions that update transaction-protected resources, such as databases, message queues, and BizTalk Server. These resources may reside on a single system or be distributed across your network. Nodinite is built on enterprise-grade services and can scale to meet your needs.
Microsoft provides detailed information about the MSDTC Windows Service in this Technet article. Coding details are available on the 'Transaction Class' page.
Are there any prerequisites?
Yes. On Windows Server versions prior to 2016, you must enable the 'Distributed Transactions' server role. See the How do I add the Server Role on Windows 2012 and Windows 2012 R2 Server? section below.
On Windows Server 2016 and later, this role is pre-installed.
How do I configure the DTC service?
Regardless of your SQL Server setup (stand-alone, failover cluster, or Always On), ALL DTC services must be configured as described below on all SQL Server nodes and Nodinite application servers.
- Open Component Services: Click Start, then Run, type '
dcomcnfg
', and click OK - In the console tree, expand Component Services > Computers > My Computer > Distributed Transaction Coordinator > Local DTC
- Right-click Local DTC and select Properties to open the Local DTC Properties dialog
- Click the Security tab
- Check the Network DTC Access checkbox
- Check the Allow Remote Clients checkbox
- Under Transaction Manager Communication:
- Check Allow Inbound and Allow Outbound
- Select No Authentication required
- If you use IBM products, check Use XA Transactions
- Click Apply, then OK
- A message box will indicate the service will be restarted
- Click OK
Configuration of the MSDTC as Nodinite requires.
If your Windows Server is installed with failover cluster and is running SQL Server, the MSDTC service should be clustered in all roles with a SQL Server instance.
TCP port range
The default range of allowed TCP ports for MS DTC depends on your Windows version. Over time, IT policies or templates may have restricted this range, leading to connection issues. By default, MS DTC uses dynamic ports:
Windows Version | Default Port range |
---|---|
Windows Server 2003 | 1024-65535 |
Windows Server 2008+ | 49152-65535 |
Many articles suggest using 5000-5020, but this is too limited and not a Windows default.
- A narrow range (e.g., 20 ports) is insufficient for enterprise workloads
- The range should match or exceed Windows defaults for reliability
Change port range
- Start a Command Prompt and enter: dcomcnfg
- Expand Component Services > My Computer
- Right-click My Computer and select Properties
- Go to the Default Protocols tab, highlight Connection-oriented TCP/IP, and click Properties
- Add a range, e.g., '50000-50200'
Note
Even 200 ports may be too narrow. Adjust registry settings as needed to optimize TCP port usage.
Change listening start port
Before making changes, review these articles:
- Configuring Microsoft Distributed Transaction Coordinator (DTC) to work through a firewall
- How to configure the MSDTC service to listen on a specific RPC server port
Note
Only change the default listening port if you cannot resolve connection or transaction issues after troubleshooting with Event Viewer and the DTC ping tool.
- Start Regedt32.exe
- Navigate to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
- Right-click MSDTC, select New > DWord (32-bit) Value
- Name the key ServerTcpPort
- Right-click ServerTcpPort, select Modify
- Set to Decimal and enter 50000 (or your chosen port)
- Restart the MSDTC Service (stand-alone) or take the MSDTC Resource offline/online in Failover Cluster Manager if clustered
Important
For clustered DTC, change instance-specific registry settings (
HKEY_LOCAL_MACHINE\Cluster\Resources\{Unique_DTC_ResourceID_GUID}\MSDTCPRIVATE\MSDTC
) on all nodes.
Confirm correct port usage
- Open an Administrative command prompt and run
Netstat –ano
to get the start port and PID - In Task Manager, select the Details tab
- Find MSDTC.exe and note the PID(s) (multiple for clustered instances)
- Validate that MSDTC is using the correct port range
Repeat MS DTC configuration changes equally on ALL servers for ALL MSDTC instances, local and clustered:
- SQL Server instances
- BizTalk
- Nodinite
- BizTalk Processing nodes
- Nodinite App and Web Servers
Further reading
Failover Cluster
If your Windows Server is installed with failover cluster and is running SQL Server, the MS DTC service should be clustered in all roles with a SQL Server instance used with Nodinite.
The MS DTC is installed in each SQL Server Resource Group (every role).
- This provides the best performance and isolation. It ensures your MSDTC instance always runs on the same physical node as SQL Server, reducing communication overhead.
- Add a dependency so SQL Server does not start before the clustered DTC resource has started
- Configure the clustered DTC with the settings detailed above
On which Windows Servers do I need to configure the MSDTC Windows Service?
Configure MSDTC on all Windows servers (Application Servers and SQL Servers/Instances) where Nodinite Core Services are installed.
On SQL Server with Failover Cluster, review the Failover Cluster section above.
How do I add the Server Role on Windows 2012 and Windows 2012 R2 Server?
As a local administrator, use Server Manager to enable the 'Distributed Transactions' server role. This feature is in the 'Application Server' section of the tree.
- Enable the 'Application Server' role
- Enable everything for the 'Distributed Transactions' role
Required server role 'Distributed Transactions' enabled
Frequently asked questions
How do I troubleshoot Microsoft DTC firewall issues?
You should first download and install the Microsoft DTCPing.exe tool .
Vital Test Steps
- Make sure to perform tests for both directions, e.g. where the application server acts as the client and the SQL Server node act as the server, and if successful, in reverse
- If you have multiple SQL nodes, you need to repeat this step for all combinations between the client and the server.
- Make sure to test with node names and, if applicable, for fail-over cluster name(s) or SQL Server Always-on; the listener name(s).
- From the Nodinite Web Client, make a test by changing the description for a User and clicking Save.
The local MS DTC detected that the MS DTC on %Server Name% has the same unique identity as the local MS DTC
If you see the following error in the Windows Event Log:
Important
The local MS DTC detected that the MS DTC on %Server Name% has the same unique identity as the local MS DTC.
The Root Cause for this problem is most likely due to an existing virtual machine being cloned. By creating a clone, the Id of the DTC Service is Not unique.
To resolve the problem; Reinstall the MS DTC service. By doing so, a new Id is created for the MS DTC Service.
Note
You need to be a member of the local administrators´ group to perform the actions listed below.
- At the command prompt, type
msdtc -uninstall
, and then press the ENTER key. - At the command prompt, type
msdtc -install
, and then press ENTER key. - Optionally if problems are still reported; Restart all Windows Servers that were part of the failing distributed transaction chain. Usually the following Windows Servers:
- BizTalk Server processing nodes
- BizTalk Server nodes where the ENTSSO service is installed
- SQL Server nodes
- Nodinite Application Server
- Nodinite SQL Nodes