2015-06-18 11 views
7

के बीच लिंक्ड सर्वर पर वितरित लेनदेन मेरे पास एक तालिका है Table1 SQL सर्वर 2014 और MySQL दोनों पर।एसक्यूएल सर्वर और mysql

Table1 
ID INT,Code VARCHAR(100) 

मैं "ODBC के लिए Microsoft OLEDB प्रदाता" का उपयोग एसक्यूएल सर्वर में किसी लिंक किए गए सर्वर MyLinkedServer बनाया।

** लिंक्ड सर्वर **

EXEC master.dbo.sp_addlinkedserver @server = N'MyLinkedServer', @srvproduct=N'MyLinkedServer', @provider=N'MSDASQL', @datasrc=N'MyLinkedServer' 
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'MyLinkedServer',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='########' 

लिंक्ड सर्वर सेटिंग्स

EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer', @optname=N'data access', @optvalue=N'true' 
EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer', @optname=N'use remote collation', @optvalue=N'true' 
EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer', @optname=N'remote proc transaction promotion', @optvalue=N'true' 

जुड़ा हुआ सर्वर सफलतापूर्वक बनाया गया है और मैं एसक्यूएल सर्वर में MySQL तालिका क्वेरी करने के लिए कर रहा हूँ।

क्वेरी

जब मैं

INSERT INTO MyLinkedServer...Table1(ID,Code) SELECT 1,'Code1' 

रिकॉर्ड डाला जाता है चलाते हैं।

BEGIN TRAN 
INSERT INTO MyLinkedServer...Table1(ID,Code) SELECT 1,'Code1' 
COMMIT 

त्रुटि::

OLE DB provider "MSDASQL" for linked server "MyLinkedServer" returned message "[MySQL][ODBC 5.3(a) Driver]Optional feature not supported". Msg 7391, Level 16, State 2, Line 8 The operation could not be performed because OLE DB provider "MSDASQL" for linked server "MyLinkedServer" was unable to begin a distributed transaction.

क्या मैं अब तक की कोशिश की है लेकिन जब मैं एक सौदे शुरू करने और INSERT चलाने के लिए, मैं कोई त्रुटि मिलती है।

  1. MSDTC में XA लेन-देन सक्षम

  2. लिंक्ड सर्वर प्रदाता में

    सेटिंग निम्नलिखित सक्षम

    • नेस्टेड प्रश्नों
    • स्तर शून्य केवल
    • inprocess अनुमति दें
    • समर्थन 'की तरह' ऑपरेटर

तथापि त्रुटि बनी रहती है मैं निम्नलिखित लिंक और अपने सुझाव जाँच:

Distributed transactions between MySQL and MSSQL

SQL-Server and MySQL interoperability?

SQL Server and MySQL Syncing

संपादित

अतिरिक्त विवरण:

  • MySQL उबंटू मशीन पर InnoDB भंडारण इंजन का उपयोग कर रहा है।

  • मैं पहले से ही ODBC connector कॉन्फ़िगर किया गया और इसका इस्तेमाल कॉन्फ़िगर करने के लिए एक ODBC सिस्टम डेटा स्रोत जो लिंक्ड सर्वर

+0

द्वारा प्रयोग की जाने तुम भी जुड़ा हुआ सर्वर निर्माण के लिए अपने DDL पोस्ट कर सकते हैं अपने खुद के XA-अनुरूप संसाधन प्रबंधकों को लागू करने की है जो:

कुछ एक यहाँ कुछ सुझाव? –

+0

@ फिलिपडिवेन - लिंक किए गए सर्वर विवरण के साथ प्रश्न अपडेट किया गया – ughai

+0

यहां आपको कुछ चेक मिल सकते हैं जो मुझे किसी अन्य स्थिति में मदद करते हैं: http://stackoverflow.com/questions/7473508/unable-to-begin-a-distributed-transaction एचटीएच – lucazav

उत्तर

3

सैद्धांतिक रूप से यह काम करना चाहिए।

मैं इस सुलझाने के लिए विभिन्न चरणों सुझाव है:

  1. क्या आप अभी तक MySql भंडारण इंजन जांच की है? यह केवल InnoDB स्तोरागे engine समर्थन MySql दस्तावेज़ प्रति लेन-देन को वितरित दिखता है: आप के बजाय OLEDB प्रदाता की एसक्यूएल सर्वर, में MySql से कनेक्ट करने के MySQL कनेक्टर्स सेटअप कनेक्शन का उपयोग करने के लिए स्विच कर सकते हैं अगर https://dev.mysql.com/doc/refman/5.7/en/xa.html

  2. देखें, जिनके अनुसार समर्थन ऊपर MySql दस्तावेज़ से लेनदेन वितरित करें।

  3. यदि अभी भी काम नहीं कर रहा है, तो यह हो सकता है कि एमएसडीटीसी सेवा में कुछ समस्या हो, तो देखें कि क्या आप अलग कर सकते हैं जैसे कि MySQL सर्वर बॉक्स पर चल रहे SQL सर्वर इंस्टेंस (जैसे आप Windows MySQL का उपयोग कर रहे हैं), या कोशिश करें दो MySQL के बीच काम कर रहे लेनदेन वितरित करने के लिए SQL सर्वर बॉक्स पर Windows MySQL स्थापित करें। जो आपको वास्तविक समस्या पर इंगित करने में सक्षम होगा।

संपादित करें:

दुर्भाग्य से ऐसा लगता है कि आप को साबित कर दिया इस काम नहीं कर रहा है, मैं MySql दस्तावेज़ को करीब से देख सकता था और उसे खेद यह है कि मैं इसे अच्छी तरह से पढ़ नहीं किया गया था लग रहा है, यह कहना है :

Currently, among the MySQL Connectors, MySQL Connector/J 5.0.0 and higher supports XA directly

और कुछ अन्य Googling मैं इस पाया द्वारा: https://bugs.mysql.com/bug.php?id=37283, लोगों को कई साल पहले यह बग रिपोर्ट और वे इस चिह्नित के रूप में एक ठीक नहीं होगा। https://social.msdn.microsoft.com/Forums/en-US/fc07937d-8b42-43da-8c75-3a4966ab95f9/xa-msdtc?forum=windowstransactionsprogramming, आपके आवेदन (https://msdn.microsoft.com/en-us/library/ms684317.aspx)

+0

धन्यवाद में मदद करता है, Mysql भंडारण इंजन InnoDB है और यह एक Ubuntu मशीन पर है। मुझे अपने विंडोज़ मशीन पर दोनों को आज़माएं और मैं आपको – ughai

+0

अपडेट करूंगा, एसएसएल सर्वर विंडोज बॉक्स पर पहले MySQL कनेक्टर स्थापित करने के बारे में कैसे? –

+0

मैं पहले से ही [ODBC कनेक्टर] (https://www.mysql.com/products/connector/) कॉन्फ़िगर और इसका इस्तेमाल कॉन्फ़िगर करने के लिए एक ODBC सिस्टम डेटा स्रोत जो लिंक्ड सर्वर – ughai

0

एसक्यूएल 2014 को के रूप में प्रयोग किया जाता है है, तो आप भर्ती के लिए नहीं जुड़े हुए सर्वर के लिए कॉन्फ़िगर किया जा सकता था एक वितरित लेनदेन में। यद्यपि आप @provstr तर्क में "enlist = false" जोड़ने का प्रयास कर सकते हैं sp_addlinkedserver

+0

"आप लिंक किए गए सर्वर को एक वितरित लेनदेन में शामिल न करने के लिए कॉन्फ़िगर कर सकते थे"। मैं एक वितरित लेनदेन चाहता हूँ। यह मेरी ज़रूरत है। लेनदेन के बिना यह ठीक काम कर रहा है। – ughai

+0

उपयोग इस लिंक आशा है कि यह http://stackoverflow.com/questions/7204452/distributed-transactions-between-mysql-and-mssql –

संबंधित मुद्दे