Dotazování MySQL ze serveru SQL pomocí propojeného serveru

posted in: Articles | 0

SQL Server má zajímavé funkce volání Propojené servery. Jedná se o propojení jiných databází SQL Serverem a používání jejich dat, jako by byla místní. V PHP je napsáno mnoho výkonných open-source systémů a většinou používají MySQL jako databázi. Tento blogový příspěvek ukazuje, jak propojit databázi MySQL se serverem SQL a jak používat propojený server v dotazech SQL.

co je propojený server?,

Propojený server MSSQL je nějaký jiný databázový server připojen k uveden jeden, takže je možné, dotaz a manipulovat s daty v jiných databázích. Například můžeme propojit nějakou databázi MySQL s MSSQL a použít ji téměř jako jakoukoli jinou databázi na MSSQL.

Obrázek je převzat z MSSQL 2019 stránce dokumentace
Propojené Servery (Databázový stroj)

i když komunikace s propojené servery prochází zprostředkovatele OLE DB, tam je také OLE DB provider pro ODBC a můžeme to použít, když naše externí databáze nemá OLE DB provider.

NB!, Propojený server je k dispozici pro celou instanci serveru SQL. To znamená, že všechny databáze SQL Serveru mohou použít propojený server k načtení dat.

propojení MySQL s SQL Serverem

přidání propojeného serveru a konfigurace nastavení připojení není vždy snadné a jednoduché.

pro propojení MySQL se serverem SQL jsem potřeboval vytvořit ODBC DSN pro MySQL (pojmenoval jsem ho jako MySQLCrm). Před provedením dalších kroků se ujistěte, že zdroj dat ODBC funguje.,

Postupujte tyto kroky propojit MySQL na SQL Server:

  1. Spustit SQL Server Management Studio (SSMS)
  2. Připojení k serveru
  3. Rozbalte Server Objekty uzlu ze stromu na levé
  4. Pravým-klikněte na Propojené Servery
  5. Vyberte Nový Propojený Server…

měli Byste vidět následující okno (nebo trochu jinak, ale myšlenka zůstává stejná).

NB! Věnujte zvláštní pozornost tomu, co vložíte do tohoto dialogu. S touto sadou dat jsem udělal link práce. Zkoušel jsem různé hodnoty a pokud je něco o milimetr špatně, připojení selže., Je to zatraceně citlivý dialog.

Připojovací řetězec do MySQL databáze by měla být, jako je uvedeno tady:

Také dávat pozor na MOŽNOST=3 – bez toho jsem dostal pouze chyby zpět při připojování k odkazovaný server.

zkuste uložit kliknutím na OK a zjistěte, zda můžete procházet propojený server. Pokud se zobrazí chyby, klepněte pravým tlačítkem myši na server a vyberte Vlastnosti. Při otevření dialogového okna přejděte na stránku Možnosti serveru. Nastavte nastavení RPC a RPC na True.,

stále si nejsem jistý, co tyto možnosti dělají, ale někteří z těch, kteří měli problémy s odkazem na MySQL, to po nastavení RPC-s na true udělali.

aby dotazování skutečně fungovalo, potřebujeme ještě jednu malou změnu, která ovlivní celého poskytovatele OLE DB, a tedy všechna připojení, která jej používají. Otevřete uzel poskytovatelů pod propojenými servery, klepněte pravým tlačítkem myši na MSDASQL (toto je poskytovatel OLE DB pro zdroje dat ODBC) a vyberte Vlastnosti.

zaškrtněte políčko pouze před úrovní nula a klepnutím na tlačítko OK uložte změny.,

dotazování na data z propojeného serveru

dotazování na propojené databáze je ve skutečnosti snadné. Zde je tabulka zákazníků z databáze crmlinked v MySQL. Tato databáze je propojena s mým SQL Serverem.

syntaxe pro dotazování propojeného serveru se trochu liší od toho, co obvykle píšeme na serveru SQL. Musíme použít čtyřdílné názvy: server.databáze.schéma.tabulka. Protože na MySQL nejsou žádná schémata a řetězec připojení určuje název databáze, můžeme je nechat, jak je uvedeno zde.

select * from MYSQLCRM...customers

spuštění tohoto dotazu z SSMS poskytuje následující výstup., Jsou to stejná data, která jsou v tabulce zákazníků MySQL.

samozřejmě můžeme také psát složitější dotazy. Všechno, co ODBC zvládne, je v pořádku.

míchání dat z lokálního a propojeného serveru

tabulky z propojeného serveru nejsou zcela izolovány od místních databázových tabulek a zobrazení. Můžeme také kombinovat data z lokálního a propojeného serveru.

prokázat smíšené dotaz na místní a propojené tabulky pojďme napsat jednoduchý dotaz, aby si všichni zákazníci z místní tabulky a jejich úvěrové hodnocení z propojené tabulky.

spuštění tohoto dotazu nám dává následující výstup.,

jelikož značka není v databázi MySQL (předpokládám, že je novým zákazníkem v e-shopu a obchodní oddělení ho ještě nemá ve svém CRM systému), nemá k dispozici rating. Ratingy pro Johna a Mary přicházejí z MySQL v aktuálním případě.

Pomocí OTEVŘÍTDOTAZ() k provedení dotazu na propojený server

výše uvedené příklady, aby veškeré zpracování dat na serveru SQL Server. Může to být velmi neoptimální,pokud je v tabulkách propojeného serveru spousta dat. Možná budeme chtít – nebo obvykle chtějí – zpracovat některá data v propojeném serveru před SQL Server začne lokální zpracování., K tomu máme OPENQUERY ().

zde je příklad použití funkce OPENQUERY () ve smíšeném dotazu. Musíme zadat název propojeného serveru a dotaz SQL pro spuštění v propojeném serveru při volání OPENQUERY (). Dotaz v červené barvě se provádí v MySQL serveru a výsledky jsou čteny na SQL Server pro další zpracování.

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

OTEVŘÍTDOTAZ() je skvělý způsob, jak optimalizovat a zrychlit smíšené dotazy spuštěním složitější dotazy nad propojený server data v propojené serveru.,

Propojené servery jsou výkonnou funkcí SQL Serveru, což nám usnadňuje používání dat z externích serverů. Existují dva způsoby, jak psát dotazy pomocí dat z propojených serverů – přímé dotazy, které se všechny zpracování na serveru SQL Server a OTEVŘÍTDOTAZ (), která nám umožňuje udělat nějaké zpracování na vzdálený server. Propojený server je integrace, a proto jeho použití vyžaduje zvláštní péči. Plánování a měření výkonu jsou nezbytné činnosti při plánování použití propojeného serveru.

Líbí se vám tento příspěvek? Posílejte své přátele sdílením!,
  • tweet
  • sdílení
  • sdílení
  • sdílení
  • sdílení
  • sdílení
  • sdílení
  • sdílení

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *