मैं SQL सर्वर पर MSDTC को कैसे सक्षम करूं?


106

क्या यह भी एक वैध प्रश्न है? मेरे पास .NET विंडोज ऐप है जो MSTDC का उपयोग कर रहा है और यह एक अपवाद फेंक रहा है:

System.Transactions.TransactionManagerCommunicationException: वितरित लेन-देन प्रबंधक (MSDTC) के लिए नेटवर्क पहुँच अक्षम कर दी गई है। घटक सेवाओं प्रशासनिक उपकरण ---> System.Runtime.InteropServices.COMException (0x8004D024) का उपयोग करके MSDTC के लिए सुरक्षा कॉन्फ़िगरेशन में नेटवर्क एक्सेस के लिए DTC को सक्षम करें: लेनदेन प्रबंधक ने दूरस्थ या नेटवर्क लेनदेन के लिए अपने समर्थन को अक्षम कर दिया है। (HRESULT से अपवाद: 0x8004D024) System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction (UInt32 प्रॉपटेशन टोकेनसाइज, बाइट] [] प्रोपगेशनटुकन, इन्ट्रिप प्रोग्राइंडडाइंट, गाइड और लेन-देनकर्ता, ओवेटिफायर, ऑइलफाइटर, ओफ्लेटिफायर, ओफ्लेटिफ़ायर, ओफ़्फ़र्टवेयर

मैंने पीसी पर MSDTC को सक्षम करने के लिए Kbalertz गाइड का पालन ​​किया , जिस पर एप्लिकेशन इंस्टॉल है, लेकिन त्रुटि अभी भी होती है।

मैं सोच रहा था कि क्या यह एक डेटाबेस मुद्दा था? यदि हां, तो मैं इसे कैसे हल कर सकता हूं?


यदि उल्लिखित समाधान समस्या का समाधान नहीं करते हैं, तो इस लिंक की
Shahab J

जवाबों:


127

Windows Server 2008 r2 और Windows Server 2012 R2 के लिए इसका उपयोग करें

  1. प्रारंभ क्लिक करें , चलाएँ क्लिक करें , dcomcnfg टाइप करें और फिर घटक सेवाएँ खोलने के लिए ठीक पर क्लिक करें ।

  2. कंसोल ट्री में, कंपोनेंट सर्विसेज का विस्तार करने के लिए क्लिक करें, कंप्यूटर का विस्तार करने के लिए क्लिक करें, माय कंप्यूटर का विस्तार करने के लिए क्लिक करें, वितरित लेनदेन समन्वयक का विस्तार करने के लिए क्लिक करें और फिर स्थानीय डीटीसी पर क्लिक करें ।

  3. राइट क्लिक करें स्थानीय डीटीसी और क्लिक गुण प्रदर्शित करने के लिए स्थानीय डीटीसी गुण संवाद बॉक्स।

  4. सुरक्षा टैब पर क्लिक करें ।

  5. चेक "नेटवर्क डीटीसी एक्सेस" चेकबॉक्स।

  6. अंत में चेक मार्क "इनबाउंड अनुमति दें" और "आउटबाउंड अनुमति दें" चेकबॉक्स।

  7. लागू करें पर क्लिक करें , ठीक है

  8. सेवा को पुनरारंभ करने के बारे में एक संदेश पॉप अप होगा ।

  9. ओके पर क्लिक करें और बस इतना ही।

संदर्भ: https://msdn.microsoft.com/en-us/library/dd327979.aspx

नोट: कभी-कभी स्थानीय कंप्यूटर या सर्वर पर नेटवर्क फ़ायरवॉल आपके कनेक्शन को बाधित कर सकता है इसलिए सुनिश्चित करें कि आप "इनबाउंड अनुमति दें" और "आउटबाउंड अनुमति दें" कनेक्शन के लिए नियम बनाते हैं। C:\Windows\System32\msdtc.exe


Windows Server 2012 R2 के लिए भी काम करता है। स्पष्ट निर्देशों के लिए धन्यवाद। अपने दम पर यह कभी नहीं मिला होगा!
जोंझू

@ जोंज़ू अब मैंने विंडोज सर्वर 2012 आर 2 के लिए भी अपडेट अपडेट कर दिया है :)
शिव सिंह

अच्छी नौकरी शिवसिंह!
सुपर कोडर

का सही मार्ग msdtc.exeहै:c:\windows\system32\msdtc.exe
अग्नि

1
ऐसा बग प्रतीत होता है जहां यूआई के माध्यम से सेट होने पर ये गुण चिपकते नहीं हैं, कम से कम क्लस्टर सर्वर 2016 नोड्स पर। समाधान रजिस्ट्री में इन गुणों को मैन्युअल रूप से सेट करना है HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security:। गुणों के बारे में अधिक जानकारी यहाँ
पॉल

102

क्या आपको MSDTC की भी आवश्यकता है? आपके द्वारा अनुभव किया जा रहा एस्केलेशन अक्सर एक ही TransactionScope के भीतर कई कनेक्शन बनाने के कारण होता है।

यदि आपको इसकी आवश्यकता है तो आपको त्रुटि संदेश में बताए अनुसार इसे सक्षम करने की आवश्यकता है। XP पर:

  • प्रशासनिक उपकरण -> घटक सेवाएँ पर जाएँ
  • विस्तार घटक सेवाएँ -> कंप्यूटर ->
  • राइट-क्लिक करें -> गुण -> MSDTC टैब
  • सुरक्षा कॉन्फ़िगरेशन बटन दबाएं

2
इसके अलावा विंडोज़ फ़ायरवॉल में मैंने पोर्ट 135 TCP खोला और c: \ windows \ msdtc.exe को अपवाद के रूप में
समीर अलीभाई

20
एक एकल TransactionScope के भीतर कई कनेक्शन बनाने से होने वाली त्रुटि के बारे में टिप्पणी के लिए धन्यवाद। मुझे त्रुटि मिल रही थी और यही समस्या थी। मैं MSDTC का उपयोग नहीं करना चाहता था, इसलिए मुझे गलत नए कनेक्शन मिले और एक मौजूदा का पुन: उपयोग किया। धन्यवाद!
जिम मैककेथ

10
मैं विंडोज 7 और 8 पर हूं, और केवल एक "डिफ़ॉल्ट समन्वयक" अनुभाग है। मैं उस सुरक्षा कॉन्फ़िगरेशन को कहां से प्राप्त कर सकता हूं जिसके बारे में आप बात कर रहे हैं?
qdev76

2
1) स्थानीय डीटीसी पर राइट क्लिक करें और गुण चुनें 2) सुरक्षा टैब खोलें 3) कम से कम नेटवर्क डीटीसी एक्सेस की जांच करें, दूरस्थ ग्राहकों की अनुमति दें और इनबाउंड की अनुमति दें।
रॉब सेडगविक

19

मैंने पाया है कि डीबग करने का सबसे अच्छा तरीका DTCPing नामक Microsoft उपकरण का उपयोग करना है

  1. फ़ाइल को सर्वर (DB) और क्लाइंट (एप्लिकेशन सर्वर / क्लाइंट पीसी) दोनों में कॉपी करें
    • इसे सर्वर और क्लाइंट पर शुरू करें
    • सर्वर पर: क्लाइंट नेटबायोस कंप्यूटर नाम भरें और डीटीसी कनेक्शन सेटअप करने का प्रयास करें
    • दोनों अनुप्रयोगों को पुनरारंभ करें।
    • क्लाइंट पर: सर्वर नेटबायोस कंप्यूटर नाम भरें और डीटीसी कनेक्शन सेटअप करने का प्रयास करें

मेरे पास हमारे पुराने कंपनी नेटवर्क में समस्याओं का मेरा किराया है, और मुझे कुछ सुझाव मिले हैं:

  • यदि आपको त्रुटि संदेश मिलता है "Gethostbyname विफल" इसका मतलब है कि कंप्यूटर अपने नेटबायोस नाम से दूसरे कंप्यूटर को नहीं ढूंढ सकता है । उदाहरण के लिए सर्वर क्लाइंट को हल और पिंग कर सकता है, लेकिन यह DNS स्तर पर काम करता है। नेटबायोस लुकअप स्तर पर नहीं। WINS सर्वर का उपयोग करना या LMHOST (गंदा) को बदलना इस समस्या को हल करेगा।
  • यदि आपको "Acces Denied" त्रुटि मिलती है, तो सुरक्षा सेटिंग्स मेल नहीं खाती हैं। आपको msdtc के लिए सुरक्षा टैब की तुलना करनी चाहिए और सर्वर और क्लाइंट को मिलाना चाहिए। देखने के लिए एक और चीज है RestrictRemoteClients मान। आपके OS संस्करण और अधिक महत्वपूर्ण रूप से सर्विस पैक के आधार पर, यह मान भिन्न हो सकता है।
  • अन्य कनेक्शन समस्याएं:
    • सर्वर और क्लाइंट के बीच फ़ायरवॉल को पोर्ट 135 पर संचार की अनुमति देनी चाहिए। और अधिक महत्वपूर्ण बात यह है कि दोनों साइटों से कनेक्शन शुरू किया जा सकता है (मुझे मेरी कंपनी में फ़ायरवॉल लोगों के साथ बहुत समस्या थी क्योंकि उन्होंने माना कि केवल सर्वर एक कनेक्शन खोलेगा। उस बंदरगाह पर)
    • प्रोटोकॉल वास्तविक लेनदेन संचार के लिए कनेक्ट करने के लिए एक यादृच्छिक पोर्ट लौटाता है। फ़ायरवॉल लोगों को पसंद नहीं है, वे बंदरगाहों को एक निश्चित सीमा तक सीमित करना पसंद करते हैं। आप फ़ायरवॉल के साथ काम करने के लिए RPC डायनेमिक पोर्ट आबंटन को कॉन्फ़िगर कैसे करें के रूप में वर्णित कुंजियों का उपयोग करके RPC डायनेमिक पोर्ट जनरेशन को सीमित कर सकते हैं ।

मेरे अनुभव में, अगर DTCPing क्लाइंट से शुरू किए गए और सर्वर से शुरू किए गए DTC कनेक्शन को सेट करने में सक्षम है, तो आपके लेन-देन में कोई समस्या नहीं है।


6

नियंत्रण कक्ष की सेवाओं से MSDTC को चालू करने के तरीके के बारे में भी यहाँ देख सकते हैं ।

सर्वर पर जहां ट्रिगर रहता है, आपको MSDTC सेवा चालू करनी होगी। आप इसे START> सेटिंग> नियंत्रण पैनल> विज्ञापन उपकरण> सेवाओं पर क्लिक करके कर सकते हैं। 'डिस्ट्रिब्यूटेड ट्रांजैक्शन कोऑर्डिनेटर' और राइट क्लिक (इसे चुनें और चुनें)> स्टार्ट नामक सेवा का पता लगाएं।


4

MSDTC को सिस्टम, सर्वर और क्लाइंट दोनों पर सक्षम होना चाहिए।
इसके अलावा, सुनिश्चित करें कि RPC को ब्लॉक करने वाले सिस्टम के बीच फ़ायरवॉल नहीं है।
DTCTest एक अच्छा लिट ऐप है जो आपको किसी अन्य समस्या का निवारण करने में मदद करता है।


मुझे लगता है कि यह नया स्थान है microsoft.com/en-us/download/details.aspx?id=30746
Air2

4

@Dan,

क्या मुझे काम करने के लिए लेनदेन के लिए सक्षम msdtc की आवश्यकता नहीं है?

केवल वितरित लेनदेन - वे जो एक से अधिक कनेक्शन शामिल करते हैं। यह सुनिश्चित करें कि आप लेन-देन के भीतर केवल एक ही कनेक्शन खोल रहे हैं और यह आगे नहीं बढ़ेगा - प्रदर्शन भी बेहतर होगा।


क्या मुझे काम करने के लिए लेनदेन के लिए सक्षम msdtc की आवश्यकता नहीं है? किसी भी तरह से, जहां तक ​​मुझे पता है, कई कनेक्शन नहीं किए जा रहे हैं। मैंने पहले ही उन चरणों को क्लाइंट पीसी पर चला दिया है, क्या आप कह रहे हैं कि मुझे डेटाबेस सर्वर पर भी उन चरणों को करना चाहिए?
Dan

@, यदि आप ado.net लेनदेन का उपयोग कर रहे हैं तो आपको DTC को सक्षम करने की आवश्यकता नहीं है। यदि आप वितरित लेनदेन का उपयोग कर रहे हैं तो आपको सर्वर पर MSDTC को सक्षम करना आवश्यक है
नीरज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.