5

Próbowałem już od prawie tygodnia, aby transakcje rozproszone działały. Mam kilka procedur na MSSQL, które próbują wybrać dane z MySQL. Moją potrzebą jest zrobić to w jednej (!) Transakcji. W tym czasie skonfigurowałem połączenie ODBC na MSSQL z jedno-poziomowym sterownikiem MySQL z OpenLink, który stwierdza, że ​​transakcje XA działają pomyślnie (istnieje przycisk testowy zintegrowany po skonfigurowaniu połączenia ODBC). Wtedy mam skonfigurować serwer połączony w MSSQL poprzez MSDASQL do tego połączenia ODBC, ale gdy robiTransakcje rozproszone między MySQL i MSSQL

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

pojawia się błąd, że nie dalej transakcja może zostać uruchomiony wewnątrz rzeczywistej transakcji. (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.)

Kolejny test:

set transaction isolation level serializable 
begin transaction 
    select * from optin..lu_source_proc 
    select * from openquery(optinxa, 'SELECT * FROM tbl_source_proc') 
commit transaction 

Wyniki w Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "optinxa" hat die Meldung "[OpenLink][ODBC][Driver]Driver does not support this function" zurückgeben. ale dlaczego states sterownik ODBC na konfigurowanie, że transakcje XA działają?

+0

Czy znalazłeś sposób, aby rozwiązać ten problem? Mam problem w tym pytaniu http://stackoverflow.com/questions/30911206/distributed-transaction-on-linked-server-between-sql-server-and-mysql – ughai

+0

Nie, nigdy tego nie robiłem. – rabudde

Odpowiedz

2

Istnieją dwa ważne aspekty tutaj -

1) Wydaje się, że OLE DB does have support dla transakcji rozproszonych - więc chciałbym założyć, że Microsoft OLE DB Provider dla ODBC źródła danych powinny też ...

Chciałbym również założyć, że jeśli MSDASQL poparła transakcji rozproszonych wtedy obsługiwać tę funkcjonalność bezpośrednio zamiast delegowania go do sterownika ODBC ...

rozproszone transakcje są włączone w sterowniku ODBC poprzez wywołanie -

SQLSetConnectAttr (SQL_ATTR_ENLIST_IN_DTC)

Więc, umożliwiając rejestrowanie sterownika OpenLink poprzez tworzenie okien dialogowych DSN powinny pomóc określić, czy SQLSetConnectAttr (SQL_ATTR_ENLIST_IN_DTC) jest tzw.

2) Musielibyśmy zobaczyć dodatkowe śledzenie, aby zobaczyć aktywność ODBC bezpośrednio prowadzące do „Sterownik nie obsługuje tej funkcji” błędzie ...

Można log a support case z OpenLink Software wziąć to dalej ...

+0

Tak, wiem, że MSDASQL obsługuje transakcje rozproszone i byłem w kontakcie ze wsparciem OpenLink. Twierdzą, że ich jednolity sterownik MySQL i MSDASQL obsługują transakcje XA. Więc nie mogli pomóc. Transakcje XA w MSDTC są również dozwolone (konfigurowane za pośrednictwem usługi składników w Windows W2k3). Mam również włączone logowanie sterownika OpenLink, ale wydaje się, że plik dziennika wypełnia tylko dane dziennika z testowania sterowników i nie ma prawdziwych transakcji. Ponownie spróbuję w poniedziałek. Dzięki za chwilkę. – rabudde

+0

Jestem chory w tym tygodniu, więc nie mogę przetestować teraz (musi poczekać do następnego tygodnia) – rabudde

+0

Podaj mi numer referencyjny sprawy OpenLink, a ja przyjrzę się sprawie ... –

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:

W systemach Windows XP i Windows Server 2003:

  1. W Panelu sterowania otwórz Narzędzia administracyjne, a następnie otwórz Usługi składowe. Możesz także kliknąć przycisk Start, kliknąć Uruchom, wpisz dcomcnfg w polu Otwórz, a następnie naciśnij przycisk OK, aby otworzyć Usługi komponentu .

  2. Rozwiń Usługi składowe, komputery i kliknij prawym przyciskiem myszy Mój komputer, , a następnie wybierz Właściwości.

  3. Kliknij kartę MSDTC, a następnie kliknij Konfiguracja zabezpieczeń.

  4. Zaznacz pole wyboru Włącz transakcje XA, a następnie kliknij przycisk OK. Spowoduje to ponowne uruchomienie usługi MS DTC.

  5. Kliknij ponownie OK, aby zamknąć okno dialogowe Właściwości, a następnie zamknij Usługi składowe.

  6. Zatrzymaj, a następnie ponownie uruchom SQL Server, aby upewnić się, że synchronizuje się z zmianami DTC MS.

W systemie Windows Vista i Windows Server 2008:

  1. Kliknij przycisk Start, wpisz dcomcnfg w polu Rozpocznij wyszukiwanie, a następnie naciśnij klawisz ENTER otworzyć Usługi składowe. Możesz również wpisać % windir% \ system32 \ comexp.msc w polu Rozpocznij wyszukiwanie, aby otworzyć Usługi komponentu .

  2. Rozwiń Usługi składowe, komputery, mój komputer, a następnie Koordynator transakcji rozproszonych.

  3. Kliknij prawym przyciskiem myszy Lokalny kod DTC, a następnie wybierz Właściwości.

  4. Kliknij kartę Zabezpieczenia w oknie dialogowym Local DTC Properties.

  5. Zaznacz pole wyboru Włącz transakcje XA, a następnie kliknij przycisk OK. Spowoduje to ponowne uruchomienie usługi MS DTC.

  6. Kliknij ponownie OK, aby zamknąć okno dialogowe Właściwości, a następnie zamknij Usługi składowe.

  7. Zatrzymaj, a następnie ponownie uruchom SQL Server, aby upewnić się, że synchronizuje się ze zmianami DTC MS.

Zobacz także Registry Entries Are Required for XA Transaction Support i potwierdzić, że kierowca osoba trzecia XA DLL tworzy te wpisy w rejestrze.