Interogarea MySQL de la SQL Server folosind linked server

posted in: Articles | 0

SQL Server are calles caracteristică interesantă Servere legate. Este vorba despre conectarea altor baze de date la SQL Server și utilizarea datelor lor ca și cum ar fi locale. Există multe sisteme open-source puternice scrise pe PHP și folosesc în mare parte MySQL ca bază de date. Această postare pe blog arată cum să conectați baza de date MySQL la SQL Server și cum să utilizați serverul conectat în interogările SQL.

ce este serverul conectat?,

serverul legat în MSSQL este un alt server de baze de date conectat la unul dat, făcând posibilă interogarea și manipularea datelor din alte baze de date. De exemplu, putem conecta o bază de date MySQL la MSSQL și o putem folosi aproape ca orice altă bază de date de pe MSSQL.

imaginea este preluată din pagina de documentare MSSQL 2019
Servere legate (motor de baze de date)

deși comunicarea cu serverele conectate trece prin furnizorii OLE DB, există și furnizor OLE DB pentru ODBC și îl putem folosi dacă Baza noastră de date externă nu are furnizor OLE DB.

NB!, Serverul legat este disponibil pentru întreaga instanță SQL Server. Aceasta înseamnă că toate bazele de date SQL Server pot utiliza server legat pentru a prelua date.

conectarea MySQL la SQL Server

adăugarea serverului conectat și configurarea setării conexiunii nu este întotdeauna ușoară și simplă.

pentru a obține MySQL legat la SQL Server am nevoie pentru a crea ODBC DSN pentru MySQL (l-am numit ca MySQLCrm). Înainte de a trece la pașii următori, asigurați-vă că sursa de date ODBC funcționează.,

Urmați acești pași pentru a link-ul de MySQL SQL Server:

  1. Run SQL Server Management Studio (SSMS)
  2. se Conecteze la server-ul dvs.
  3. Extinde Obiecte Server nod din arbore de la stânga
  4. clic-Dreapta pe Linked Servere
  5. Selectați Nou Server Legat…

ar trebui să consultați următorul dialog (sau pic diferit, dar ideea rămâne aceeași).

NB! Acordați o atenție suplimentară la ceea ce inserați în acest dialog. Cu acest set de date am făcut link-ul de lucru. Am încercat valori diferite și dacă ceva este greșit cu un milimetru, atunci conexiunea nu reușește., E un dialog al naibii de sensibil.

șir de Conexiune la baza de date MySQL ar trebui să fie, așa cum se arată aici:

de Asemenea, să acorde o atenție la OPȚIUNEA=3 – fără ca acest lucru trebuie doar erori la conectarea la server legat.

încercați să salvați făcând clic pe OK și vedeți dacă puteți naviga la serverul conectat. Dacă primiți erori, faceți clic dreapta pe server și selectați Proprietăți. Păstrând dialogul deschis, treceți la pagina Opțiuni Server. Setați setările RPC și RPC la True.,

nu sunt încă foarte sigur ce fac aceste opțiuni, dar unii dintre cei care au avut probleme cu link-ul către MySQL au făcut-o să funcționeze după ce au setat RPC-urile la true.pentru a face interogarea să funcționeze efectiv, avem nevoie de încă o mică schimbare care afectează întregul furnizor OLE DB și, prin urmare, toate conexiunile care îl folosesc. Deschideți nodul furnizorilor sub servere conectate, faceți clic dreapta pe MSDASQL (acesta este furnizorul OLE DB pentru sursele de date ODBC) și selectați Proprietăți.

bifați caseta înainte de numai nivelul Zero și faceți clic pe OK pentru a salva modificările.,

interogarea datelor de pe serverul conectat

interogarea bazelor de date conectate este de fapt ușoară. Iată tabelul clienților din Baza de date crmlinked în MySQL. Această bază de date este legată de serverul meu SQL.

sintaxa pentru interogarea serverului legat este puțin diferită de ceea ce scriem de obicei pe SQL Server. Trebuie să folosim nume din patru părți: server.baza de date.schema.masa. Deoarece nu există scheme pe MySQL și șirul de conexiune specifică numele bazei de date, atunci le putem lăsa așa cum se arată aici.

select * from MYSQLCRM...customers

rularea acestei interogări din SSMS dă următoarea ieșire., Sunt aceleași date care sunt în tabelul clienților MySQL.desigur ,putem scrie și interogări mai complexe. Tot ce se poate ocupa ODBC este în regulă.

amestecarea datelor de pe serverul local și legat

tabelele de pe serverul conectat nu sunt complet izolate de tabelele și vizualizările bazei de date locale. De asemenea, putem amesteca date de pe serverul local și conectat.

pentru a demonstra interogare mixtă peste tabele locale și legate să scrie interogare simplă pentru a obține toți clienții din tabelul local și ratingurile lor de credit din tabelul legat.

rularea acestei interogări ne oferă următoarea ieșire.,deoarece Mark nu este prezent în baza de date MySQL (să presupunem că este client nou în E-shop și Departamentul de vânzări nu îl are încă în sistemul CRM), atunci nu are rating de credit disponibil. Ratingurile de Credit pentru John și Mary provin de la MySQL în cazul actual.

folosind OPENQUERY () pentru a executa interogare în server legat

exemplele de mai sus face toate prelucrarea datelor pe SQL Server. Poate fi foarte neoptimal dacă există o mulțime de date în tabelele serverului conectat. Este posibil să dorim – sau de obicei dorim – să procesăm unele date în serverul conectat înainte ca SQL Server să înceapă procesarea locală., Pentru aceasta avem OPENQUERY ().

Iată exemplul de utilizare a funcției OPENQUERY () în interogare mixtă. Trebuie să specificăm numele serverului legat și interogarea SQL pentru a rula în serverul conectat la apelarea OPENQUERY (). Interogarea în roșu este executat în MySQL server și rezultatele sunt citite la SQL Server pentru prelucrare ulterioară.

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() este o modalitate foarte bună de a optimiza și de a accelera interogări mixte prin rularea interogări mai complexe peste date legate de server în server legat.,

înfășurarea

serverele legate este o caracteristică puternică a SQL Server, care ne ușurează utilizarea datelor de pe servere externe. Există două moduri de a scrie interogări folosind date de la serverele conectate – interogări directe care fac toate prelucrările pe SQL Server și OPENQUERY() care ne permite să facem unele prelucrări în serverul de la distanță. Serverul legat este integrarea și, prin urmare, utilizarea acestuia are nevoie de îngrijire suplimentară. Planificarea și măsurarea performanței sunt activități obligatorii atunci când planificați să utilizați serverul conectat.

ți-a plăcut această postare? Împuterniciți-vă prietenii împărtășind-o!,
  • tweet
  • share
  • share
  • share
  • share
  • share
  • share
  • share
  • Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *