Lekérdezése MySQL SQL Server segítségével kapcsolt szerver

posted in: Articles | 0

SQL Server érdekes funkció calles kapcsolódó szerverek. Arról van szó, hogy más adatbázisokat összekapcsolunk az SQL Serverrel, és úgy használjuk az adataikat, mintha helyi lenne. Sok nagy teljesítményű nyílt forráskódú rendszerek írt PHP és ezek többnyire a MySQL adatbázisként. Ez a blogbejegyzés bemutatja, hogyan lehet összekapcsolni a MySQL adatbázist az SQL Serverrel, valamint hogyan kell használni a kapcsolódó kiszolgálót az SQL lekérdezésekben.

mi a linkelt szerver?,

az MSSQL-ben található linkelt szerver egy másik adatbázis-kiszolgáló, amely az adott adatbázishoz kapcsolódik, lehetővé téve az adatok lekérdezését és manipulálását más adatbázisokban. Például összekapcsolhatunk néhány MySQL adatbázist az MSSQL-rel, majd szinte ugyanúgy használhatjuk, mint bármely más MSSQL adatbázis.

A kép az MSSQL 2019 dokumentációs oldaláról készült
Linked Servers (Database Engine)

bár a linkelt szerverekkel való kommunikáció OLE DB szolgáltatókon megy keresztül, az ODBC OLE DB szolgáltatója is van, és akkor is használhatjuk, ha külső adatbázisunkban nincs OLE DB szolgáltató.

NB!, A kapcsolt szerver teljes SQL Server példányhoz elérhető. Ez azt jelenti, hogy az összes SQL Server adatbázis összekapcsolt kiszolgálót használhat az adatok letöltéséhez.

a MySQL összekapcsolása az SQL Server

kapcsolódó kiszolgáló hozzáadásával és a kapcsolat beállítása nem mindig egyszerű és egyszerű.

ahhoz, hogy a MySQL összekapcsolódjon az SQL Serverrel, létre kellett hoznom az ODBC DSN-t a MySQL-hez (MySQLCrm-nek neveztem el). Mielőtt a következő lépésekre lépne, ellenőrizze, hogy az ODBC adatforrás működik-e.,

Kövesse az alábbi lépéseket, hogy a link, MySQL, SQL Server:

  1. Fut az SQL Server Management Studio (SSMS)
  2. Csatlakozás lehetőséget, hogy a szerver
  3. Bontsa ki a Kiszolgáló Objektum csomópont a fa a bal
  4. kattintson Jobb egérgombbal Kapcsolódó Szerverek
  5. Válassza az Új Kapcsolódó Szerver…

látnod kellene, a következő párbeszédablakban (vagy kicsit más, de az ötlet ugyanaz marad).

NB! Különös figyelmet kell fordítani arra, hogy mit helyez be ehhez a párbeszédpanelhez. Ezzel az adatkészlettel link munkát végeztem. Próbáltam különböző értékeket, és ha valami egy milliméter rossz, akkor a kapcsolat sikertelen., Átkozottul érzékeny dialógus.

a MySQL adatbázishoz tartozó csatlakozási karakterláncnak itt kell megjelennie:

szintén figyeljen a=3 opcióra – anélkül, hogy csak hibákat kaptam vissza, amikor összekapcsolt szerverhez csatlakoztam.

próbálja meg menteni az OK gombra kattintva, majd nézze meg, hogy böngészhet-e a kapcsolódó kiszolgálóra. Ha hibákat kap, akkor kattintson a jobb gombbal a kiszolgálóra, majd válassza a Tulajdonságok lehetőséget. Ha nyitva tartja a párbeszédpanelt, lépjen a Szerverbeállítások oldalra. Állítsa az RPC és RPC beállításokat True értékre.,

még mindig nem vagyok biztos benne, hogy ezek a lehetőségek mit csinálnak, de azok közül, akiknek problémái voltak a MySQL-hez való kapcsolással, az RPC-s true beállítása után működött.

ahhoz, hogy a lekérdezés valóban működjön, még egy kis változtatásra van szükségünk, amely az egész OLE DB szolgáltatót érinti, ezért minden kapcsolatot használ. Nyissa meg a szolgáltatók csomópontot a kapcsolt kiszolgálók alatt, kattintson a jobb gombbal az MSDASQL-re (ez az ODBC adatforrások OLE DB szolgáltatója), majd válassza a Tulajdonságok lehetőséget.

jelölje be a négyzetet a nulla szint előtt, majd kattintson az OK gombra a módosítások mentéséhez.,

az összekapcsolt kiszolgálóról származó adatok lekérdezése

a kapcsolt adatbázisok lekérdezése valójában egyszerű. Itt van az ügyfelek tábla crmlinked adatbázis MySQL. Ez az adatbázis kapcsolódik az én SQL Server.

szintaxis lekérdezéséhez kapcsolódó szerver egy kicsit más, mint amit általában írni az SQL Server. Négy részből álló neveket kell használnunk: szerver.adatbázis.séma.asztal. Mivel a MySQL-en nincsenek sémák, és a connection string megadja az adatbázis nevét, akkor ezeket kihagyhatjuk, mint itt látható.

select * from MYSQLCRM...customers

a lekérdezés SSMS-ből történő futtatása a következő kimenetet adja., Ugyanazok az adatok, mint a MySQL ügyfelek táblájában.

természetesen bonyolultabb lekérdezéseket is írhatunk. Minden, amit az ODBC képes kezelni, rendben van.

a helyi és a kapcsolt szerver

táblái nem teljesen elkülönülnek a helyi adatbázis tábláktól és nézetektől. A helyi és a kapcsolt szerver adatait is össze tudjuk keverni.

a helyi és kapcsolt táblázatok vegyes lekérdezésének bemutatásához írjunk egyszerű lekérdezést, hogy minden ügyfél a helyi táblázatból, valamint a kapcsolódó táblázatból származó hitelminősítéseikből származzon.

a Lekérdezés futtatása a következő kimenetet adja.,

mivel Mark nincs jelen a MySQL adatbázisban (tegyük fel, hogy új ügyfél az e-shop-ban, az értékesítési osztály pedig még nem rendelkezik vele a CRM rendszerükben), akkor nincs elérhető hitelminősítése. A John and Mary hitelminősítői jelenleg a MySQL-től érkeznek.

az OPENQUERY () használatával lekérdezést hajthat végre kapcsolt kiszolgálón

a fenti példák az összes adatfeldolgozást az SQL Serveren végzik. Nagyon nem optimális lehet, ha sok adat van a kapcsolt szerver táblázataiban. Érdemes lehet – vagy általában szeretnénk-feldolgozni néhány adatot a kapcsolt kiszolgálón, mielőtt az SQL Server megkezdi a helyi feldolgozást., Ehhez van OPENQUERY ().

itt van egy példa az OPENQUERY () függvény használatára vegyes lekérdezésben. Meg kell adnunk a kapcsolt kiszolgáló nevét és az SQL lekérdezést, hogy a kapcsolt kiszolgálón FUTHASSUNK az OPENQUERY () hívásakor. A piros színű lekérdezés a MySQL Serverben kerül végrehajtásra, az eredmények pedig az SQL Server számára olvashatók további feldolgozás céljából.

SELECT
c.FirstName,
c.LastName,
crm_c.credit_rating as CreditRating
FROM
Customers c
LEFT JOIN OPENQUERY(MYSQLCRM, '
SELECT
c.credit_rating
FROM
customers p
left join loyalty_points lp on
c.customer_id = lp.customer_id
WHERE
lp.points > 1000
') crm_c ON
c.ssn = crm_c.ssn
ORDER BY
crm_c.credit_rating,
c.LastName,
c.FirstName

OPENQUERY() nagyszerű módja annak, hogy optimalizálja és felgyorsítsa a vegyes lekérdezéseket azáltal, hogy bonyolultabb lekérdezéseket futtat a kapcsolt szerver adatain a kapcsolt szerveren.,

a kapcsolt kiszolgálók az SQL Server nagy teljesítményű funkciója, amely megkönnyíti számunkra a külső szerverek adatainak használatát. Kétféle módon lehet lekérdezéseket írni a kapcsolt szerverek adataival – közvetlen lekérdezések, amelyek minden feldolgozást elvégeznek az SQL Server-en és az OPENQUERY-n (), amely lehetővé teszi számunkra a távoli kiszolgálón történő feldolgozást. A kapcsolt szerver integráció, ezért a használata extra gondosságot igényel. A tervezés és a teljesítménymérés elengedhetetlen tevékenység a kapcsolt szerver használatának tervezésekor.

tetszett ez a bejegyzés? Felhatalmazza barátait megosztásával!,
  • tweet
  • share
  • share
  • share
  • share

  • share
  • share
  • share

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük