Knowing the limits (MSDTC participant / enlistment limits)

In most cases when flowing a distributed transaction between more than a single machine, a number of Transaction Managers (TM's) will be involved. In Microsoft’s case the TM implementation is the Microsoft Distributed Transaction Coordinator (MSDTC).

The MSDTC representing the machine where the transaction is begun is normally referenced to as the superior MSDTC. The MSDTC representing further machines involved in the transactions are normally referred to as subordinate MSDTC’s.

In Microsoft Windows there is a limit to the amount of subordinate MSDTC’s that can participate in a single transaction and this is set to 64.

During a transaction, usually we will enlist one or more Resource Managers (RM's). An example of an RM would be Microsoft SQL Server. In many scenarios it is the responsibility of the subordinate TM to enlist the RM it represents. In Microsoft Windows we have a limit in which each MSDTC involved in the transaction (each subordinate) can each enlist a maximum of 32 RM’s.

Chris Forster