2012-07-06 17 views
15

विफल रहा है, जब मैं विजुअल स्टूडियो 2010 से अपना एप्लिकेशन चलाने की कोशिश कर रहा हूं, तो मुझे अंतर्निहित लेनदेन प्रबंधक के साथ संचार विफल रहा है। मुझे इस समस्या के लिए Google पर खोज है, मैं इस त्रुटि को हल करने के लिए सभी संभावित समाधानों का प्रयास किया है।एमएसडीटीसी - अंतर्निहित लेनदेन प्रबंधक के साथ संचार

यहां मैंने अपने डीटीसी गुणों में बदलाव किया है।

-- Network DTC Access 
-- Allow Inbound 
-- Allow Outbound 
-- Allow Remote Administrator 
-- Allow Remote Clients 
-- No Authentication Required 
-- Enable XA Transaction 
-- Enable SNA LU 6.2 Transaction 

कृपया मुझे बताएं, अगर कोई इस समस्या का समाधान जानता है।

धन्यवाद मनोज Sitapara

+2

क्या आपने फ़ायरवॉल चालू किया था? –

+0

क्या दो कंप्यूटर NetBIOS नाम (उनके कंप्यूटर नाम) द्वारा पहुंच योग्य हैं? बस एक पिंग आज़माएं। अन्यथा, डीटीसीपीिंग चलाएं। –

उत्तर

18

डीटीसी फ़ायरवॉल के माध्यम से संवाद करने के लिए अनुमति की कोशिश करो।

enter image description here

12

डाउनलोड DTCPing सभी कंप्यूटरों वितरित लेनदेन में शामिल है और इसे चलाने पर।

अधिकांश समय यह आप सटीक त्रुटि और क्या गलत है (समान सीआईडी ​​की तरह), आदि

करने के कारणों में दे देंगे:

  1. कंप्यूटर NetBIOS नाम से पहुंच योग्य नहीं हैं। इस मामले में आपको या तो मैपिंग आईपी/होस्टनाम जोड़ने के लिए अपनी hosts फ़ाइल को समायोजित करना होगा, या यदि डोमेन में, उनके लिए DNS उपनाम जोड़ें।
  2. सर्वर वीएम हैं और उन्हें उसी वीएम इंस्टेंस से क्लोन किया गया था। इस मामले में एमएसडीटीसी सीआईडी ​​समान हैं और आपको एमएसडीटीसी को स्थापित/पुनर्स्थापित करने की आवश्यकता है (डीटीसीपी आपको यह बताएगा)।
+0

इसके लिए धन्यवाद - मेरी समस्या यह थी कि मेरे पास एक वेब पर मेरा वेब सर्वर था और मेरा डेटाबेस सर्वर दूसरे पर था। डीटीसीपींग ने एक त्रुटि फेंक दी कि पूरी तरह से योग्य डोमेन नेटबीओएसओ नाम नहीं है। मुझे अन्य मशीनों के लिए प्रत्येक मेजबान फ़ाइल में प्रविष्टियां जोड़नी थीं और मेरी कनेक्शन स्ट्रिंग को एडजस्ट करना था। – ravuya

2

MSDTC troubleshooting guide देखें, जो संभावित समस्या के रूप में डुप्लिकेट सीआईडी ​​सूचीबद्ध करता है। आपने दोहरे CIDs का पता लगाने के लिए निम्न PowerShell स्क्रिप्ट का उपयोग और MSDTC को पुनर्स्थापित करता है, तो WinRM का उपयोग कर की जरूरत कर सकते हैं:

write-host "Checking for duplicate CIDs and reinstalling MSDTC if needed." 
$servers = "server1","server2","server3" 
$CIDs = Invoke-Command -ComputerName $servers -ScriptBlock { gci Microsoft.PowerShell.Core\Registry::HKEY_CLASSES_ROOT\CID | foreach { $_.Name } | Out-String -Stream } #Array of all CIDs on all servers 
$UniqueCIDs = $CIDs | select -Unique 
if($CIDs.Length -eq $UniqueCIDs.Length){ 
    Write-Output "All CIDs are unique, so we don't need to reinstall MSDTC" 
} else { 
    Write-Output "Found duplicate CIDs, so we need to reinstall MSDTC on all VMs" 
    Invoke-Command -ComputerName $servers -ScriptBlock { 
     write-output "`r`nUninstalling MSDTC to regenerate CIDs on $env:computername" 
     msdtc -uninstall | Write-Output 
     sleep 25 #wait for previous command to finish 
     write-output "`r`nReinstalling MSDTC to regenerate CIDs on $env:computername" 
     msdtc -install | Write-Output 
     sleep 25 #wait for previous command to finish 
     write-output "`r`nSetting MSDTC service to automatic on $env:computername" 
     Set-Service msdtc -startuptype "auto" 
     write-output "`r`nWARNING: $env:computername may need to be restarted for changes to take effect." 
    } 
} 
0

मैं एक क्लस्टर पर डीटीसी और MSMQ स्थापित करने के लिए प्रयास करने के दौरान विफल रही संचार त्रुटि मिली। मेरे मामले में अंतर्निहित त्रुटि "स्मृति से बाहर हो गई।" मैं क्लस्टर से दूसरे सर्वर पर लेनदेन संदेश भेजने में सक्षम था, लेकिन उस सर्वर से क्लस्टर तक वापस नहीं। मेरी सेवा का यह अपवाद फेंक होगा:

System.Transactions.TransactionAbortedException: The transaction has aborted. 
---> System.Transactions.TransactionManagerCommunicationException: Communication 
with the underlying transaction manager has failed. ---> 
System.Runtime.InteropServices.COMException: Ran out of memory (Exception from HRESULT: 0x80000002) 

यह लेख बहुत अस्पष्ट समाधान था: http://www.nervousadmin.com/category/microsoft/windows/dtc/

संक्षेप में:

वहाँ एक HKLM \ क्लस्टर के तहत कुंजी ClusterDefaultResource के लिए रजिस्ट्री में guid है \ संसाधन प्रकार \ वितरित लेनदेन समन्वयक जिसे निष्पादन योग्य के लिए डीटीसी सेवा के पथ पर ग्रिड तर्क के साथ संरेखित करने की आवश्यकता है।

इस समस्या का एक और लक्षण यह है कि यदि आप घटक सेवा प्रबंधन कंसोल के माध्यम से डीटीसी गुणों तक पहुंचने का प्रयास करते हैं तो आपको स्मृति त्रुटि से बाहर निकलना होगा। घटक सेवा/कंप्यूटर/मेरा कंप्यूटर/वितरित लेनदेन समन्वयक के तहत कंसोल पेड़ में देखें और वहां सूचीबद्ध प्रत्येक डीटीसी पर राइट क्लिक करें। यदि आपके guids गठबंधन नहीं हैं तो यह त्रुटि फेंक देगा।

  • ओपन services.msc। वितरित लेनदेन समन्वयक खोजें (यदि दो हैं, तो आप उसके नाम पर ग्रिड के साथ एक की तलाश कर रहे हैं)
  • डीटीसी के गुणों को खोलें। गाइड को निष्पादन योग्य '
  • ओपन regedit से ग्रिड की प्रतिलिपि बनाएँ। HKLM \ Cluster \ ResourceTypes \ Distributed Transaction Coordinator
  • क्लस्टरडिफॉल्ट रिसोर्स मान की तुलना आपके द्वारा कॉपी की गई मार्गदर्शिका में करें। यदि वे अलग हैं, तो अगले चरण को चीजों को ठीक करना चाहिए। यदि नहीं, तो यह आपका जवाब नहीं है।
  • वर्तमान मूल्य का बैकअप लें। ClusterDefaultResource प्रॉपर्टी संपादित करें: GUID गुणों से कॉपी की गई मार्गदर्शिका को पेस्ट करें। आपको अपने क्लस्टर में प्रत्येक नोड पर ऐसा करने की आवश्यकता होगी।
  • भाग्य के साथ, इसने आपकी समस्या हल कर दी है।
संबंधित मुद्दे