Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [MS SQL 08]Linked server MySql 5.1 dwa pytanka

Hej!
Mam zlinkowany serwer mysqla 5.1 . Wszystko ładnie śmiga, zapytania się wykonują etc.
Napotkałem jednak problem :
Otóż chciałbym, z ms sql wywołać procedurę na mysql która zwraca wartość outputrem czyli coś takiego :


CREATE PROCEDURE `xxx`(OUT param1 int)
begin
select * from book;
select count(*) into param1 from testy.book;
end;


Po stronie MS SQL odpalam :

DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @wynikOUT int;
SET @SQLString = N'exec (''call testy.xxx(@wynikOUT)'') at mysql';
SET @ParmDefinition = N' @wynikOUT int OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @wynikOUT OUTPUT;
select @wynikOUT;


I klapa zmienna @wynikOUT jest ciągle NULLem.

2.Czy udało się komuś odpalić transakcje rozproszoną, czyli najzwyklejszy :

BEGIN DISTRIBUTED TRAN
exec('delete from testy.xx where xx_id=10') at mysql;
commit;


Dostaję ciągle error:


OLE DB provider "MSDASQL" for linked server "mysql" returned message "[MySQL][ODBC 5.1 Driver]Optional feature not supported".

Msg 7391, Level 16, State 2, Line 2
The operation could not be performed because OLE DB provider "MSDASQL" for linked server "mysql" was unable to begin a distributed transaction.


Google na ten temat troche mówią, ale jeszcze nie znalazłem sprawdzonego i potwierdzonego rozwiązania. Wszelkie zalecania odnośnie MSDTC chyba sprawdziłem. Podejrzewam, że to wina samego sterownika ODBC ,wcześniejszy w wersji 3.51 zachowuję się tak samo...

Dzięki za wszelkie porady
pzdrKrzysztof Białkowski edytował(a) ten post dnia 06.01.10 o godzinie 00:22
Grzegorz Łebek

Grzegorz Łebek .NET | JAVA | EAI |
SQL | MCTS |
Developer,
hybris/SAP

Temat: [MS SQL 08]Linked server MySql 5.1 dwa pytanka

Co do transakcji rozproszonych to z tego co pamiętam musisz zainstalować hotfix 954950, tyle że z tym hotfixem jest niemały problem. Nie został on dołączony do SP1 i jest tylko w Cumulative Update Package 2. Później już go nie ma (wg. stron ms).
Zainstaluj hotfix i daj znać czy się udało
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [MS SQL 08]Linked server MySql 5.1 dwa pytanka

Grzegorz Łebek:
Co do transakcji rozproszonych to z tego co pamiętam musisz zainstalować hotfix 954950, tyle że z tym hotfixem jest niemały problem. Nie został on dołączony do SP1 i jest tylko w Cumulative Update Package 2. Później już go nie ma (wg. stron ms).
Zainstaluj hotfix i daj znać czy się udało

dobra z tymi poprawkami to też są widzę niezłe cyrki.
Zainstalowałem z biegu Cumulative update package 2 for SQL Server 2008.
I widzę, że już wersji SP1 doinstalować się nie da. Dostaje error:

The installed SQL Server product version is 10.0.1600.22, and the expected SQL Server version is 10.1.2531.0.

Co ciekawe Select @@VERSION zwraca : 10.0.1779.0

Ten sam bład mam na drugiej maszynie, gdzie nei instalowałem jeszcze żadnych poprawek i faktycznie jest wersja 10.0.1600.22
Wiesz, może w jaki sposób uzyskać 'expected version' 10.1.2531.0 ?

Oczywiście po zainstalowaniu umulative update package 2 problem pozostał : )Krzysztof Białkowski edytował(a) ten post dnia 08.01.10 o godzinie 01:02
Grzegorz Łebek

Grzegorz Łebek .NET | JAVA | EAI |
SQL | MCTS |
Developer,
hybris/SAP

Temat: [MS SQL 08]Linked server MySql 5.1 dwa pytanka

hmm martwi mnie że problem pozostał.
Ja zrobiłem tak, że zainstalowałem hotfix, poustawiałem MSDTC (przez dcomcnfg.exe). Tam ważne jest żeby były włączone XA Transactions. Z ważniejszych opcji przy tworzeniu Linked Servera to ustawienie RPC, RPC Out i Enable Promotion of Distributed Transactions na TRUE.

Ważne aby MSDTC skonfigurowany był na obu maszynach. Dodatkowo upewnij się czy włączona jest usługa DTC (też na obu).
Spróbuj też przed poleceniem BEGIN TRAN wkleić linijkę
SET XACT_ABORT ON;
U mnie to zadziałało, chociaż też na gołej instalacji SQL Server 2008 każda transakcja rozproszona kończyła się błędem. Troche to dziwne że taki gniot się znalazł w wersji komercyjnej. Tylko różnica taka że ja miałem transakcje na dwóch Sql Serverach 2008...

Co do problemu z wersjami to niestety nie miałem nigdy takiego problemu. Powiem więcej, zawsze instalowałem hotfix przed SP1.

Tak myślę jeszcze że może to jest też problem sieciowy. Masz postawione firewalle?Grzegorz Łebek edytował(a) ten post dnia 08.01.10 o godzinie 08:14
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [MS SQL 08]Linked server MySql 5.1 dwa pytanka

Grzegorz Łebek:
hmm martwi mnie że problem pozostał.
Ja zrobiłem tak, że zainstalowałem hotfix, poustawiałem MSDTC (przez dcomcnfg.exe). Tam ważne jest żeby były włączone XA Transactions. Z ważniejszych opcji przy tworzeniu Linked Servera to ustawienie RPC, RPC Out i Enable Promotion of Distributed Transactions na TRUE.
Checked - wszystko co wymieniłeś już testowałem.
Ważne aby MSDTC skonfigurowany był na obu maszynach. Dodatkowo upewnij się czy włączona jest usługa DTC (też na obu).
Spróbuj też przed poleceniem BEGIN TRAN wkleić linijkę
SET XACT_ABORT ON;
U mnie to zadziałało, chociaż też na gołej instalacji SQL Server 2008 każda transakcja rozproszona kończyła się błędem. Troche to dziwne że taki gniot się znalazł w wersji komercyjnej. Tylko różnica taka że ja miałem transakcje na dwóch Sql Serverach 2008...
SET XACT_ABORT ON też wklejam i niestety ciągle nic...
Właśnie myślę, że to Mysql ma jakiś problem z obsługą transakcji rozproszonych. Wiesz może jak ustawić/sprawdzić MSDTC na Mysql ?
Co do problemu z wersjami to niestety nie miałem nigdy takiego problemu. Powiem więcej, zawsze instalowałem hotfix przed SP1.

Tak myślę jeszcze że może to jest też problem sieciowy. Masz postawione firewalle?

Firewalle są wyłączone. Wszystkie akcje póki co testuje na localhoscie (mysql+mssql).Krzysztof Białkowski edytował(a) ten post dnia 08.01.10 o godzinie 09:36



Wyślij zaproszenie do