5

के बीच वितरित लेनदेन मैंने वितरित लेनदेन कार्य करने के लिए लगभग एक सप्ताह तक प्रयास किया है। मेरे पास MSSQL पर कुछ प्रक्रियाएं हैं जो MySQL से डेटा का चयन करने का प्रयास करती हैं। मेरी ज़रूरत एक (!) लेनदेन में करना है। उस समय मैंने ओएसएलक्यूएल पर ओडीलिंक से एकल-स्तरीय MySQL ड्राइवर के साथ एमएसएसक्यूएल कनेक्शन स्थापित किया है, जो मुझे बताता है कि एक्सए लेनदेन सफलतापूर्वक काम करता है (ओडीबीसी कनेक्शन को कॉन्फ़िगर करने के बाद एकीकृत एक परीक्षण बटन है)। तब मैं इस ODBC कनेक्शन के लिए MSDASQL के माध्यम से MSSQL में किसी लिंक किए गए सर्वर सेट किया है, लेकिन जबMySQL और MSSQL

begin distributed transaction 
    select * from optin..lu_source_proc 
    select * from openquery(optinxa, 'SELECT * FROM tbl_source_proc') 
commit transaction 

मैं त्रुटि मिलती है कर रही है, कि आगे कोई लेनदेन वास्तविक लेन-देन के अंदर शुरू कर दिया जा सकता है। (Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "optinxa" hat die Meldung "Es können keine weiteren Transaktionen in dieser Sitzung gestartet werden." zurückgeben.)

एक अन्य परीक्षण:

Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "optinxa" hat die Meldung "[OpenLink][ODBC][Driver]Driver does not support this function" zurückgeben. में
set transaction isolation level serializable 
begin transaction 
    select * from optin..lu_source_proc 
    select * from openquery(optinxa, 'SELECT * FROM tbl_source_proc') 
commit transaction 

परिणाम लेकिन क्यों कॉन्फ़िगर करने पर ODBC ड्राइवर, कि XA लेनदेन काम करते हो राज्यों?

+0

क्या आपको इसे हल करने का कोई तरीका मिला? मुझे इस प्रश्न में एक समस्या है http://stackoverflow.com/questions/30911206/distributed-transaction-on-linked-server-between-sql-server-and-mysql – ughai

+0

नहीं, मुझे यह काम करने के लिए कभी नहीं मिला है। – rabudde

उत्तर

2

यहां दो महत्वपूर्ण पहलू हैं -

1) ऐसा लगता है कि OLE DB does have support वितरित लेन-देन के लिए - तो मुझे लगता है यह होगा कि ODBC डेटा स्रोत के लिए Microsoft OLE DB प्रदाता चाहिए भी ...

मैं यह भी मान लें कि अगर MSDASQL समर्थन वितरित लेन-देन किया था तो यह ODBC ड्राइवर के लिए यह सौंपने से है कि कार्यक्षमता संभाल होगा सीधे नहीं बल्कि ...

वितरित लेनदेन को फोन करके ODBC ड्राइवर में चालू हैं -

SQLSetConnectAttr (SQL_ATTR_ENLIST_IN_DTC)

तो, DSN निर्माण संवाद के माध्यम से OpenLink ड्राइवर लॉगिंग को सक्षम करने के निर्धारित SQLSetConnectAttr (SQL_ATTR_ENLIST_IN_DTC) कहा जाता है कि क्या मदद करनी चाहिए।

2) हम आदेश ODBC गतिविधि तुरंत करने के लिए अग्रणी "ड्राइवर इस समारोह का समर्थन नहीं करता" त्रुटि को देखने के लिए अतिरिक्त ट्रेसिंग को देखने के लिए की आवश्यकता होगी ...

आप log a support caseOpenLink Software के साथ इस आगे ले जा सकते हैं ...

+0

हां, मुझे पता है कि MSDASQL समर्थन वितरित लेनदेन और मैं ओपनलिंक समर्थन के संपर्क में था। वे मुझे बताते हैं कि उनके एकल-स्तरीय MySQL ड्राइवर और MSDASQL दोनों XA लेनदेन का समर्थन करते हैं। तो वे मदद नहीं कर सके। एमएसडीटीसी में एक्सए लेनदेन की भी अनुमति है (विंडोज़ W2k3 में घटक सेवा के माध्यम से कॉन्फ़िगर किया गया)। मैंने ओपनलिंक ड्राइवर में लॉगिंग भी सक्षम की है, लेकिन ऐसा लगता है कि लॉग फ़ाइल केवल ड्राइवर परीक्षण से लॉग डेटा के साथ भरती है और कोई वास्तविक लेनदेन नहीं होती है। मैं इसे सोमवार को फिर से कोशिश करूंगा। अभी के लिए धन्यवाद। – rabudde

+0

मैं इस सप्ताह बीमार हूं, इसलिए अब मैं परीक्षण नहीं कर सकता (अगले सप्ताह तक इंतजार करना है) – rabudde

+0

मुझे ओपनलिंक केस संदर्भ संख्या दें और मैं इस मामले पर एक नज़र डालेगा ... –

0

The following steps are required if you want to use XA data sources together with Microsoft Distributed Transaction Coordinator (MS DTC) for handling distributed transactions:

Windows XP और Windows Server 2003 पर:

  1. नियंत्रण कक्ष से, व्यवस्थापकीय उपकरण खोलें, और फिर घटक सेवा खोलें। आप स्टार्ट बटन पर भी क्लिक कर सकते हैं, ओपन बॉक्स में रन, टाइप dcomcnfg पर क्लिक करें, और फिर घटक सेवाओं को खोलने के लिए ठीक दबाएं।

  2. घटक सेवा, कंप्यूटर का विस्तार करें और मेरा कंप्यूटर, पर राइट-क्लिक करें और फिर गुण चुनें।

  3. एमएसडीटीसी टैब पर क्लिक करें और फिर सुरक्षा कॉन्फ़िगरेशन पर क्लिक करें।

  4. एक्सए लेनदेन सक्षम करें चेक बॉक्स का चयन करें, और उसके बाद ठीकक्लिक करें। इससे एमएस डीटीसी सेवा पुनरारंभ हो जाएगी।

  5. गुण संवाद बॉक्स को बंद करने के लिए फिर से ठीक क्लिक करें, और फिर घटक सेवा बंद करें।

  6. रोकें और फिर SQL सर्वर को पुनरारंभ करें ताकि यह सुनिश्चित किया जा सके कि यह एमएस डीटीसी परिवर्तनों के साथ समन्वयित हो।

Windows Vista और Windows Server 2008 पर:

  1. , प्रारंभ बटन क्लिक करें प्रारंभ खोज बॉक्स में: Dcomcnfg टाइप करें, और तो घटक सेवाएँ खोलने के लिए ENTER दबाएँ। घटक सेवाओं को खोलने के लिए आप स्टार्ट सर्च बॉक्स में % windir% \ system32 \ comexp.msc टाइप भी कर सकते हैं।

  2. घटक सेवा, कंप्यूटर, मेरा कंप्यूटर, और फिर वितरित लेनदेन समन्वयक का विस्तार करें।

  3. स्थानीय डीटीसी पर राइट-क्लिक करें और फिर गुण चुनें।

  4. स्थानीय डीटीसी गुण संवाद बॉक्स पर सुरक्षा टैब पर क्लिक करें।

  5. एक्सए लेनदेन सक्षम करें चेक बॉक्स का चयन करें, और उसके बाद ठीकक्लिक करें। इससे एमएस डीटीसी सेवा पुनरारंभ हो जाएगी।

  6. गुण संवाद बॉक्स को बंद करने के लिए फिर से ठीक क्लिक करें, और फिर घटक सेवा बंद करें।

  7. रोकें और फिर यह सुनिश्चित करने के लिए SQL सर्वर को पुनरारंभ करें कि यह एमएस डीटीसी परिवर्तनों के साथ को सिंक करता है।

भी देखें Registry Entries Are Required for XA Transaction Support और मान्य है कि तृतीय पक्ष ड्राइवर XA DLL इन रजिस्ट्री प्रविष्टियाँ बनाता है।