nem piskóta
(for a version in a less exclusive language, click here.)
legalább három órányi szopáson vagyok túl, közben vagy ötször feltúrtam az egész internetet oda meg vissza, minimális sikerrel. tehát leírom, hátha másnak is jól jön.
alapfeladat
Microsoft SQL szerveren csatolt szerverként (linked server) létrehozni egy MySQL szervert, hogy MS SQL ütemezett tárolt eljárásokban MySQL adatokat tudjunk feldolgozni. tudom, perverz.
megoldás
egyetlen járható út van, a MySQL-hez nincsen OLE DB meghajtó, így marad az ODBC. azt még kis guglizással meg lehet találni, hogy egy ilyesmi parancs létrehozza a kapcsolatot:
EXEC master.dbo.sp_addlinkedserver @server = N’LinkedServerName’, @srvproduct = N’MySQL’, @provider = N’MSDASQL’, @provstr = N’Driver = {MySQL ODBC 3.51 Driver}; DB=[database]; SERVER=[server]; uid=[user_id]; pwd=[password]‘
ekkor azonban az ember egy olyan hülye helyzetben találja magát, hogy meg tudja tekinteni a MySQL katalógusokat (adatbázisokat), azokban a táblákat és a nézeteket, oszt jónapot. más csatolt MS SQL, DB2 vagy syBase működik rendesen, csak ez nem. mindenféle hibaüzeneteket generál, hogy például ez a tábla contains no columns that can be selected or the current user does not have permissions on that object.
merthogy adatokat lekérdezi meg egy OPENQUERY-s kanyarral kell:
SELECT * FROM OPENQUERY(LinkedServerName, ‘SELECT * FROM [table name]‘) AS tbl1
nehéz az élet.
Tags: linked servers, MS SQL, MySQL

beleszól