MSDTC duplicate CID warning message in MBV report

<CID> is duplicated on servers <Machine-1> and <Machine-2> - Check if <Machine-1> and <Machine-2> are not cluster nodes as CID must be unique on non-clustered servers!

You might see above warning message when you run MBV report on a BizTalk Server, where BizTalk DB is configured on a Windows SQL Cluster. It completely safe to ignore this warning message iff <Machine-1> and <Machine-2> are part of same cluster i.e. <Machine-1> and <Machine-2> are configured as two physical nodes of the cluster. I am assuming that MSDTC is configured as a cluster resource. However if <Machine-1> and <Machine-2> are NOT configured as a part of same cluster, then it is must to fix it, in order to run Distributed Transaction successfully.

Whenever there is a Distributed Transaction happens between two different physical machines a superior and subordinate relationship established between them, superior being the one who starts the transaction and subordinate being the one which will participate in the transaction. And we cannot flow the transaction to subordinates if they have same CID as superior. So we HAVE to make sure that we have unique CID corresponding to MSDTC resource. While working with cluster where you have MSDTC as a clustered resource, you can have only one MSDTC service running doesn't matter how many nodes you have in the cluster. So that makes it as only single MSDTC service between all the nodes and that's why they have same CID

How to check if two machines have same CID for MSDTC service and How to fix it?

1-      Open registry editor.

2-      Browse to HKCR\CID.

3-      You will see four keys under it.

4-      Each of these keys has the same tree structure and there is one sub-key called "Description".

5-      You need to go through all the Keys and search for the one which has "Description" as "MSDTC".

Note: The "Description" should be "MSDTC" only as shown below:

6-      You can follow the same steps on other interrogated machines; if they are same continue following rest of the steps to change the CID value for MSDTC.

7-      Browse to www.GuidGen.com

8-      Click on "Create new GUID".

9-      Copy the newly create GUID under "Your GUID"

10-   Rename the key with the sub-key "Description" as "MSDTC" with the newly created GUID. For e.g. in above snapshot I would rename "2e2a8d19-18e3-4df0-8306-938d43895b89".

11-   Once you renamed it, please restart "Distributed Transaction Co-ordinator" service from Services.msc.

Comments

  • Anonymous
    March 01, 2012
    I found similar problem on VMs running Windows Server 2008 64 bit. In fact, the CID and CID.local are not the same between the VMs.The real problem:The CID and CID.local keys are only available at HKLMSOFTWAREClasses sub-tree. The keys are not cloned to the HKLMSOFTWAREClassesWow6432Node sub-tree.The solution:Export the HKEY_CLASSES_ROOTCID and HKEY_CLASSES_ROOTCID.local keys to two .reg files, and then re-import them right after the export. The magic here is that the export and re-import action will clone the keys to the HKLMSOFTWAREClassesWow6432Node sub-tree!
  • Anonymous
    May 09, 2013
    Here is a powershell script to view CIDs and reinstall MSDTC#View: CIDs (These must be different on all systemsgci Microsoft.PowerShell.CoreRegistry::HKEY_CLASSES_ROOTCID | select Name#reinstall MSDTC to regenerate CIDsmsdtc -uninstallsleep 5msdtc -installsleep 5Set-Service msdtc -startuptype "auto"#then reboot
  • Anonymous
    June 25, 2013
    Hi, Thanks for the info. I just want to clarify, if I have two DB server running SQL in clustered mode, the CID on both machine must be the same?