Componente Microsoft Data Access - Microsoft Data Access Components

Componente Microsoft Data Access
MDAC Architecture.svg
MDAC oferă un cadru uniform pentru accesarea unei varietăți de surse de date pe platforma lor Windows
Dezvoltatori Microsoft
Lansarea finală
2.8 SP1 (2.81.1117.6) / mai 2005
Sistem de operare Windows 98 , Windows ME , Windows NT 4 , Windows 2000 , Windows XP , Windows Server 2003 , Windows 7 , Windows 10
Tip Bază de date
Licență Freeware
Site-ul web msdn2 .Microsoft .com / ro-ne / date / aa937729 aspx

Componentele Microsoft Data Access ( MDAC ; cunoscut și sub numele de Windows DAC ) este un cadru de tehnologii Microsoft corelate care permite programatorilor un mod uniform și cuprinzător de dezvoltare a aplicațiilor care pot accesa aproape orice magazin de date. Componentele sale includ: ActiveX Data Objects (ADO), OLE DB și Open Database Connectivity (ODBC). Au existat și câteva componente depreciate, precum Microsoft Jet Database Engine , MSDASQL (furnizorul OLE DB pentru ODBC) și Remote Data Services (RDS). Unele componente au devenit , de asemenea depășite , cum ar fi fostul Access Objects API - ul și la distanță obiecte de date .

Prima versiune a MDAC a fost lansată în august 1996. În acel moment, Microsoft a declarat că MDAC era mai mult un concept decât un program autonom și nu avea o metodă de distribuție larg răspândită. Mai târziu, Microsoft a lansat upgrade-uri la MDAC ca pachete redistribuibile bazate pe web. În cele din urmă, versiunile ulterioare au fost integrate cu Microsoft Windows și Internet Explorer , iar în MDAC 2.8 SP1 au încetat să mai ofere MDAC ca pachet redistribuibil.

De-a lungul istoriei sale, MDAC a făcut obiectul mai multor defecte de securitate , care au dus la atacuri, cum ar fi un atac de privilegii crescut , deși vulnerabilitățile au fost în general remediate în versiunile ulterioare și destul de prompt. Versiunea actuală este 2.8 service pack 1, dar produsul a avut multe versiuni diferite și multe dintre componentele sale au fost depreciate și înlocuite cu tehnologii Microsoft mai noi. MDAC este acum cunoscut sub numele de Windows DAC în Windows Vista .

Arhitectură

Cea mai recentă versiune a MDAC (2.8) constă din mai multe componente care interacționează, toate fiind specifice Windows, cu excepția ODBC (care este disponibil pe mai multe platforme). Arhitectura MDAC poate fi privită ca trei straturi: un strat de interfață de programare, format din ADO și ADO.NET , un strat de acces la baza de date dezvoltat de furnizorii de baze de date precum Oracle și Microsoft ( OLE DB , furnizori gestionați .NET și drivere ODBC ) și baza de date în sine. Aceste straturi componente sunt toate puse la dispoziția aplicațiilor prin intermediul API-ului MDAC . Microsoft SQL Server de rețea Biblioteca, o metodă de acces de proprietate specifică la Microsoft SQL Server, este de asemenea inclusă în MDAC. Dezvoltatorii de aplicații Windows sunt încurajați să utilizeze ADO sau ADO.NET pentru accesul la date, beneficiul fiind că utilizatorii programului de aplicație nu sunt constrânși în alegerea arhitecturii bazei de date, cu excepția faptului că ar trebui să fie susținut de MDAC. Desigur, dezvoltatorii au încă posibilitatea de a scrie aplicații care accesează direct OLE DB și ODBC.

Biblioteca de rețea Microsoft SQL Server

Biblioteca de rețea Microsoft SQL Server (cunoscută și sub numele de Net-Lib) este utilizată de Microsoft SQL Server pentru a citi și scrie date folosind multe protocoale de rețea diferite . Deși Net-Lib este specific pentru SQL Server, Microsoft îl include cu MDAC. SQL Server utilizează biblioteca Open Data Services (ODS) pentru a comunica cu Net-Lib, care se interfață direct cu subsistemul Win32 al liniei sistemului de operare Windows NT . Biblioteca de rețea SQL Server este controlată prin utilizarea unui utilitar de rețea client, care este inclus în pachet cu SQL Server.

Fiecare protocol de rețea acceptat de Net-Lib are un driver separat (nu trebuie confundat cu un driver de dispozitiv ) și are suport pentru un strat de sesiune în stiva de protocol. Există două tipuri generale de Net-Lib: primar și secundar. Primar Net-Lib constă dintr - un Super Socket Net-Lib și memorie partajată Net-Lib, în timp ce există numeroase secundare Net-libs, inclusiv TCP / IP și canale denumite biblioteci de rețea (conducte numite sunt o metodă de comunicare cu alte procese printr-o conductă persistentă de sistem căreia i se dă o identitate). Furnizorul Microsoft OLE DB pentru SQL Server (SQLOLEDB) comunică prin Net-Libs primare.

Super Socket Net-Lib se ocupă de comunicații inter-computer și coordonează Net-Libs secundare - deși Net-Lib secundar TCP / IP este o excepție prin faptul că apelează direct Windows Sockets 2 API. Banyan vița de vie , AppleTalk , ServerNet , IPX / SPX , Giganet și RPC Net-libs au scăzut de la MDAC 2.5 începând. Ruterul de bibliotecă de rețea a avut sarcina de a gestiona toate aceste protocoale, totuși acum doar conductele numite secundare Net-Lib sunt gestionate de router. Super Socket Net-Lib gestionează, de asemenea, criptarea datelor prin utilizarea API-ului Windows SSL .

Memoria partajată Net-Lib, pe de altă parte, gestionează conexiunile între mai multe instanțe de SQL Server care există pe un computer. Folosește o zonă de memorie partajată pentru a comunica între procese. Acest lucru este inerent sigur; nu este nevoie de criptarea datelor între instanțele SQL Server care există pe un computer, deoarece sistemul de operare nu permite niciun alt proces de acces la zona instanțelor de memorie partajată.

Net-Lib este, de asemenea, capabil să susțină uzurparea unui context de securitate al utilizatorului conectat pentru protocoale care acceptă conexiuni autentificate (numite conexiuni de încredere ). Acest lucru permite Net-Lib să furnizeze un mecanism de autentificare integrat prin autentificare Windows . Autentificarea Windows nu este acceptată pe Windows 98 sau Windows Me.

OLE DB

OLE DB (numit și OLEDB sau OLE-DB) permite aplicațiilor MDAC accesul la diferite tipuri de ([date]) magazine într-un mod uniform. Microsoft a folosit această tehnologie pentru a separa aplicația de date și poate stoca în site-ul web magazinul de date pe care trebuie să îl acceseze. Acest lucru s-a făcut deoarece diferite aplicații au nevoie de acces la diferite tipuri și surse de date și nu trebuie neapărat să știe cum să acceseze funcționalitatea specifică tehnologiei. Tehnologia este împărțită conceptual în consumatori și furnizori . Consumatorii sunt aplicațiile care au nevoie de acces la date, iar furnizorul este componenta software care expune o interfață OLE DB prin utilizarea Component Object Model (sau COM).

OLE DB este tehnologia interfeței de acces la baza de date utilizată de MDAC. Furnizorii OLE DB pot fi creați pentru a accesa astfel de stocări de date simple, cum ar fi un fișier text sau o foaie de calcul , prin intermediul unor baze de date complexe precum Oracle și SQL Server . Cu toate acestea, deoarece tehnologia de stocare a datelor poate avea capacități diferite, este posibil ca furnizorii OLE DB să nu implementeze fiecare interfață posibilă disponibilă. Capacitățile disponibile sunt implementate prin utilizarea obiectelor COM - un furnizor OLE DB va mapa funcționalitatea tehnologiei de stocare a datelor la o anumită interfață COM. Microsoft consideră că disponibilitatea unei interfețe este „specifică furnizorului”, deoarece este posibil să nu fie aplicabilă în funcție de tehnologia bazei de date implicată. În plus, totuși, furnizorii pot crește și capacitățile unui magazin de date; aceste capabilități sunt cunoscute sub numele de servicii în limbajul Microsoft.

Furnizorul Microsoft OLE DB pentru SQL Server (SQLOLEDB) este furnizorul OLE DB pe care Microsoft îl furnizează pentru Microsoft SQL Server de la versiunea 6.5 în sus.

Legătură de date universală

Fișierele de legătură de date universale (sau „fișiere .udl”) oferă o interfață de utilizator comună pentru specificarea atributelor de conexiune. Un utilizator poate utiliza o casetă de dialog Proprietăți legătură de date pentru a salva informațiile de conexiune într-un fișier .udl ca alternativă la specificarea directă manuală într-un șir de conexiune. În consecință, aceste fișiere oferă un nivel convenabil de indirectare . În plus, caseta de dialog specifică un număr de furnizori de date OLE DB alternativi pentru o varietate de aplicații țintă.

ODBC

Open Database Connectivity (ODBC) este o interfață nativă accesată printr-un limbaj de programare (de obicei C ) care poate efectua apeluri într-o bibliotecă nativă . În MDAC, această interfață este definită ca o DLL. Este necesar un modul sau un driver separat pentru fiecare bază de date care trebuie accesată. Funcțiile din API-ul ODBC sunt implementate de aceste drivere specifice DBMS. Driverul pe care Microsoft îl furnizează în MDAC se numește Driver ODBC SQL Server (SQLODBC) și (așa cum sugerează și numele) este conceput pentru SQL Server Microsoft. Suportă SQL Server v6.5 și versiuni ulterioare. ODBC permite programelor să utilizeze cereri SQL care vor accesa bazele de date fără a fi nevoie să cunoască interfețele proprietare ale bazelor de date. Acesta gestionează cererea SQL și o convertește într-o cerere pe care sistemul de baze de date individual o înțelege. Potrivit Microsoft, „După SQL Server 2012, driverul ODBC va fi actualizat pentru cele mai recente caracteristici ale serverului, inclusiv baza de date SQL Microsoft Windows Azure, și lansat ca Driver ODBC Microsoft pentru SQL Server.”

ZGOMOT

ActiveX Data Objects ( ADO ) este o interfață de programare la nivel înalt pentru OLE DB. Folosește un model ierarhic de obiecte pentru a permite aplicațiilor să creeze, să recupereze, să actualizeze și să șteargă date din surse acceptate de OLE DB. ADO constă dintr-o serie de obiecte ierarhice bazate pe COM și colecții, un obiect care acționează ca un container de multe alte obiecte. Un programator poate accesa direct obiecte ADO pentru a manipula date sau poate trimite o interogare SQL la baza de date prin intermediul mai multor mecanisme ADO. ADO este alcătuit din nouă obiecte și patru colecții .

Colecțiile sunt:

  1. Câmpuri: Această colecție conține un set de obiecte Câmp. Colecția poate fi utilizată fie într-un obiect Recordset, fie într-un obiect Record. Într-un obiect Recordset, fiecare dintre obiectele Field care alcătuiesc colecția Fields corespunde unei coloane din acel obiect Recordset. Într-un obiect de înregistrare, un câmp poate fi un URL absolut sau relativ care indică un spațiu de nume structurat în arbore (utilizat pentru furnizorii de date semi-structurate , cum ar fi furnizorul Microsoft OLE DB pentru publicarea pe Internet) sau ca o referință la obiectul implicit flux asociat cu acel obiect Record.
  2. Proprietăți: un obiect poate avea mai multe obiecte de proprietate, care sunt conținute în colecția de proprietăți a obiectului.
  3. Parametri: un obiect Command poate avea mai multe comenzi Parameter pentru a-și schimba comportamentul predefinit, iar fiecare dintre obiectele Parameter sunt conținute în colecția Parametri a obiectului Command.
  4. Erori: toate erorile create de furnizor sunt transmise către o colecție de obiecte de eroare, în timp ce colecția de erori în sine este conținută într-un obiect de conexiune. Când o operațiune ADO creează o eroare, colecția este ștearsă și un nou grup de obiecte de eroare sunt create în colecție.

Obiectele sunt:

  1. Conexiune: Obiectul conexiunii este conexiunea ADO la un magazin de date prin OLE DB. Obiectul de conexiune stochează informații despre sesiune și oferă metode de conectare la depozitul de date. Deoarece unele magazine de date au metode diferite de stabilire a unei conexiuni, este posibil ca unele metode să nu fie acceptate în obiectul de conexiune pentru anumiți furnizori OLE DB. Un obiect de conexiune se conectează la magazinul de date folosind metoda sa „Deschisă” cu un șir de conexiune care specifică conexiunea ca o listă de perechi de valori cheie (de exemplu: " Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';"). La începutul căruia trebuie să se identifice tipul de conexiune la magazinul de date pe care obiectul de conexiune îl necesită. Acesta trebuie să fie:
    • un furnizor OLE DB (de exemplu SQLOLEDB), utilizând sintaxa „provider =”
    • un nume de fișier, utilizând sintaxa „file name =”
    • un furnizor și un server la distanță (consultați RDS ), utilizând sintaxa „Furnizor la distanță =” și „Server la distanță =”
    • o adresă URL absolută , utilizând sintaxa „URL =”
  2. Comandă: După ce obiectul de conectare stabilește o sesiune la sursa de date, instrucțiunile sunt trimise furnizorului de date prin obiectul de comandă. Obiectul comandă poate trimite interogări SQL direct furnizorului prin utilizarea CommandText proprietate, trimite o interogare parametrizat sau procedură stocată prin utilizarea unui parametru obiect sau Parametrii de colectare sau de a rula o interogare și a reveni rezultatele unui obiect de date CCD prin poarta Executați metoda. Există mai multe alte metode care pot fi utilizate în obiectul Command care se referă la alte obiecte, cum ar fi obiectele Stream, RecordSet sau Connection.
  3. Set de înregistrări : un set de înregistrări este un grup de înregistrări și poate proveni fie dintr-un tabel de bază, fie ca rezultat al unei interogări către tabel. Obiectul RecordSet conține o colecție Fields și o colecție Properties . Colecția Fields este un set de obiecte Field, care sunt coloanele corespunzătoare din tabel. Colecția Properties este un set de obiecte Property, care definește o anumită funcționalitate a unui furnizor OLE DB. RecordSet are numeroase metode și proprietăți pentru examinarea datelor care există în cadrul acestuia. Înregistrările pot fi actualizate în setul de înregistrări prin schimbarea valorilor din înregistrare și apoi apelarea metodei Updatesau UpdateBatch. Adăugarea de înregistrări noi se realizează prin intermediul AddNewfuncției și apoi apelând la metoda Updatesau UpdateBatch. Înregistrările sunt șterse și în setul de înregistrări cu metoda Ștergere și apoi apelând la metoda Actualizare. Cu toate acestea, dacă din anumite motive ștergerea nu poate avea loc, cum ar fi din cauza încălcărilor integrității referențiale , atunci setul de înregistrări va rămâne în modul de editare după apelul către Updatemetodă. Programatorul trebuie să apeleze în mod explicit la CancelUpdatefuncție pentru a anula actualizarea. În plus, ADO poate derula tranzacțiile înapoi (dacă acest lucru este acceptat) și poate anula actualizările de lot. Seturile de înregistrări pot fi, de asemenea, actualizate în unul din cele trei moduri: printr-o actualizare imediată, printr-o actualizare batch sau prin utilizarea tranzacțiilor:
    1. Imediat: setul de înregistrări este blocat folosind butonul adLockOptimisticsau adLockPessimistic. Datele sunt actualizate la sursa de date după modificarea înregistrării și apelarea Updatemetodei.
    2. Lot: setul de înregistrări este blocat folosind adLockBatchOptimisticși de fiecare dată când Updateeste apelat, datele sunt actualizate într-un buffer temporar. În cele din urmă, când UpdateBatcheste apelat, datele sunt complet actualizate înapoi la sursa de date. Acest lucru are avantajul că totul se face în memorie și, dacă apare o problemă, atunci UpdateCanceleste apelat și actualizările nu sunt trimise la sursa de date
    3. Tranzacție: dacă furnizorul OLE DB permite acest lucru, pot fi utilizate tranzacțiile . Pentru a începe tranzacția, programatorul invocă BeginTransmetoda și face actualizările necesare. Când toate sunt terminate, programatorul invocă CommitTransmetoda. RollbackTranspoate fi invocat pentru a anula orice modificări efectuate în interiorul tranzacției și a reveni la baza de date la starea înainte de a începe tranzacția
  4. Înregistrare: Acest obiect reprezintă o înregistrare din baza de date și conține o colecție de câmpuri. Un RecordSet constă dintr-o colecție de obiecte Record.
  5. Flux: Un flux, utilizat în principal într-un obiect RecordSet, este un mijloc de citire și scriere a unui flux de octeți. Este folosit mai ales pentru a salva un set de înregistrări într-un format XML, pentru a trimite comenzi către un furnizor OLE DB ca alternativă la obiectul CommandText și pentru a conține conținutul unui fișier binar sau text.
  6. Parametru: un parametru este un mijloc de a modifica comportamentul unei piese comune de funcționalitate, de exemplu, o procedură stocată poate avea parametri diferiți în funcție de ceea ce trebuie făcut; acestea se numesc comenzi parametrizate .
  7. Câmp: Fiecare obiect Record conține mai multe câmpuri, iar un obiect RecordSet are și un obiect Field corespunzător. Obiectul Field al obiectului RecordSet corespunde unei coloane din tabelul bazei de date la care face referire.
  8. Proprietate: Acest obiect este specific furnizorului OLE DB și definește o abilitate pe care furnizorul a implementat-o. Un obiect de proprietate poate fi fie o proprietate încorporată - este o proprietate bine definită implementată deja de ADO și, prin urmare, nu poate fi modificată - fie o proprietate dinamică - definită de furnizorul de date subiacent și poate fi modificată
  9. Eroare: Când apare o eroare de furnizor OLE DB în timpul utilizării ADO, un obiect Eroare va fi creat în colecția Erori. Cu toate acestea, alte erori nu intră într-un obiect Error. De exemplu, orice erori care apar atunci când se manipulează date într-un obiect RecordSet sau Field sunt stocate într-o proprietate Status.

ADO.NET

ADO.NET este cea mai recentă versiune a ADO (după ADO 2.8, denumită acum adesea ADO Classic) și face parte din stiva MDAC 2.8 alături de ADO clasic. Este construit în jurul Microsoft .NET . Deși uneori văzut ca un pas evolutiv de la ADO, Microsoft a făcut unele schimbări structurale fundamentale. ADO.NET rulează printr-un furnizor gestionat .NET, o versiune modificată a unui furnizor OLE DB special conceput pentru .NET. Structura obiectului nu mai este construită în jurul unui obiect Recordset. În schimb, un obiect Dataset este utilizat pentru a conține date colectate din mai multe surse. Acest lucru este transparent pentru programator. Spre deosebire de vechiul set de înregistrări ADO, designul setului de date promovează utilizarea datelor deconectate. Conceptual, un obiect Dataset poate fi văzut ca o mică bază de date relațională în memorie, care permite manipularea datelor în orice direcție. Pentru a propaga modificările înapoi în baza de date, se utilizează un obiect DataAdapter care transferă date între sursa de date și obiectul DataSet. Cursorii au fost, de asemenea, depreciate în ADO.NET, fiind înlocuiți cu un obiect DataReader , care este utilizat pentru a procesa eficient o listă mare de rezultate o înregistrare la un moment dat, fără a le memora.

Componente învechite și învechite

MDAC este un cadru component în continuă evoluție. Ca atare, au existat mai multe componente care anterior făceau parte din acesta, dar de atunci au fost depreciate sau eliminate complet din cadru.

Motor de bază de date Microsoft Jet și JRO

Jet reprezintă Joint Engine Technology și a fost un motor de baze de date utilizat pentru Microsoft Access , Microsoft Exchange Server și Visual Basic . Jet a făcut parte dintr-un sistem de gestionare a bazelor de date relaționale (RDBMS) și a oferit o singură interfață pe care alte programe ar putea să o folosească pentru a accesa bazele de date Microsoft. Jet a oferit, de asemenea, suport pentru securitate, integritate referențială , procesarea tranzacțiilor , indexare , blocare a înregistrărilor și a paginilor și replicarea datelor. În versiunile ulterioare ale Jet, motorul a fost extins pentru a rula interogări SQL , pentru a stoca date de caractere în format Unicode , pentru a crea vizualizări și a permis replicarea bidirecțională cu Microsoft SQL Server. De atunci a fost înlocuit de MSDE .

Exista trei module pentru Jet. Unul a fost Native Jet ISAM Driver , o bibliotecă de legături dinamice Jet (DLL) care putea manipula direct fișierele bazei de date Microsoft Access (MDB), care era o formă modificată a unei baze de date ISAM (Indexed Sequential Access Method ). Un alt modul a fost driverele ISAM , DLL-uri care permiteau accesul la bazele de date ISAM, printre care se numără fișierele Xbase , Paradox , Btrieve și FoxPro . Ultimul modul a fost DLL pentru obiecte de acces la date (DAO) , DAO a permis programatorilor accesul la motorul Jet. A fost practic un limbaj de date orientat obiect folosit de dezvoltatorii de aplicații Access Basic și Visual Basic pentru a accesa Jet.

În mod similar, Microsoft Jet OLE DB Provider and Replication Objects (JRO) care a permis replicarea între sursele de date Jet a fost eliminat din MDAC 2.6

MSDASQL și Oracle ODBC

Furnizorul Microsoft OLE DB pentru ODBC sau MSDASQL, a fost un furnizor OLE DB pentru a permite accesul obiectelor de date ActiveX la bazele de date prin orice driver ODBC. Microsoft a furnizat mai mulți furnizori OLE-DB (pentru serviciul de indexare, Active Directory , Jet, SQL Server, Oracle ( MSDAORA) și Internet Publishing), cu toate acestea, cu excepția cazului în care se indică altfel, ADO a folosit implicit MSDASQL ca furnizor implicit. După MDAC 2.5, atât driverul Oracle ODBC, cât și MSDASQL au acceptat Oracle 7 și parțial au acceptat Oracle 8i. Funcțiile care nu au fost acceptate au fost:

Microsoft a renunțat inițial la componenta MSDASQL pentru sistemele lor de operare pe 64 de biți, iar driverul Microsoft Oracle ODBC a fost ulterior înlocuit de un furnizor Oracle gestionat .NET, care a acceptat Oracle 9i. Cu toate acestea, Windows Server 2008 și Windows Vista SP1 sunt livrate cu o versiune pe 64 de biți a MSDASQL.

Servicii de date la distanță (RDS)

Serviciile de date la distanță (RDS) au permis recuperarea unui set de date de pe server, pe care clientul le-a modificat într-un fel și apoi le-a trimis înapoi la server pentru procesare ulterioară. Odată cu adoptarea populară a Transact-SQL , care extinde SQL cu astfel de structuri de programare precum bucle și instrucțiuni condiționale, acest lucru a devenit mai puțin necesar și a fost în cele din urmă depreciat în MDAC 2.7. Microsoft a produs SOAP Toolkit 2.0, care permite clienților să facă acest lucru printr-un standard deschis bazat pe XML .

SQLXML

SQLXML a fost proiectat pentru SQL Server 2000, dar a fost depreciat cu MDAC 2.6. A permis ca baza de date relațională Microsoft să fie vizualizată de XPath și a permis ca datele să poată fi vizualizate ca fișier XML . De fapt, acesta nu a fost depreciat, dar a fost eliminat din versiunile ulterioare ale MDAC, deși Microsoft îl oferă ca componentă descărcabilă și îl va suporta pe sistemele lor de operare pe 64 de biți.

Componente învechite

Mai multe componente au fost eliminate complet din MDAC de către Microsoft și nu mai sunt acceptate. Sunt:

  • ESQL / C: SQL încorporat (cunoscut și sub numele de E-SQL sau ESQL / C) este un mod de a utiliza SQL atunci când programarea în Visual C. Microsoft a renunțat la suport după ce SQL Server 6.5 a fost lansat, deși au licențiat o parte din ESQL / C mediu de rulare pentru o companie numită Micro Focus , care dezvoltă compilatoare și instrumente COBOL
  • DAO: DAO sau Data Access Objects erau o interfață orientată pe obiect creată de Microsoft, care permitea versiunilor timpurii ale Microsoft Access și Visual Basic să acceseze motorul bazei de date Jet . Mai târziu (în versiunea 3.5) a reușit să ocolească complet motorul Jet și să acceseze direct sursele de date ODBC .
  • RDO: Remote Data Objects , sau RDO, a fost o tehnologie Microsoft care a permis crearea de interfețe care au apelat direct pe ODBC. Versiunea RDO 2.0 a fost versiunea finală dezvoltată de Microsoft.
  • DB-Library: un API bazat pe C care a permis unei aplicații să interacționeze cu SQL Server. Nu va fi acceptat pe niciun produs după SQL Server 2000 și nu s-au adăugat caracteristici după SQL Server 6.5.

Istorie

Microsoft a lansat de-a lungul timpului mai multe versiuni ale MDAC. Metoda de distribuție a variat, iar setul de caracteristici este diferit pentru fiecare versiune.

MDAC 1.0

MDAC 1.0 a fost lansat pentru prima dată în august 1996. Potrivit Microsoft, „MDAC 1.0 a existat mai mult ca concept decât un program de configurare coordonat, independent”. Stiva MDAC 1.0 a constat din ODBC 3.0, OLE DB 1.1, ADO 1.0 și Advanced Data Connector (ADC) 1.0 - care, potrivit Microsoft, a fost precursorul Serviciului de date la distanță al MDAC 1.5. De asemenea, a inclus drivere ODBC pentru baze de date Access / Jet, SQL Server și Oracle . MDAC 1.0 a fost lansat prin mai multe mecanisme: Advanced Data Connector livrat cu Internet Information Server (IIS) 3.0 și ca fișier cab descărcabil ; OLE DB 1.1 și ADO 1.0 au fost livrate împreună cu OLE DB 1.1 SDK, care a venit cu Visual Studio 97 și a fost, de asemenea, descărcabil. MDAC 1.0 a venit cu Active Server Pages, care a venit în IIS 3.0 și a venit și cu Visual InterDev 1.0.

MDAC 1.5

MDAC 1.5 a fost lansat între septembrie 1997 și martie 1998 și a implicat un mecanism de distribuție mai centralizat decât MDAC 1.0. A fost lansat cu Microsoft Internet Explorer 4.0, Internet Client SDK 4.0 și printr-un CD-ROM distribuit la Conferința pentru dezvoltatori profesioniști (PDC) din 1997 . Exista cinci versiuni ale MDAC 1.5:

  • MDAC 1.5 (versiunea inițială): inclus cu Internet Explorer 4.0 și SDK pentru client Internet.
  • MDAC 1.5a: descărcabil de pe site-ul Microsoft
  • MDAC 1.5b: a venit cu Windows NT 4.0 Option Pack & Office 97
  • MDAC 1.5c: s-au remediat problemele cu filetarea ADO și ODBC Connection Pooling și a fost distribuit prin intermediul site-ului web Microsoft. A venit doar cu componentele de runtime ADO / MDAC.
  • MDAC 1.5d: a fost inclus cu Windows 98 și Internet Explorer 4.01 service pack 1.

Diferitele versiuni ale MDAC 1.5 au constat din:

  • ODBC 3.5
  • OLE DB 1.5
  • ADO 1.5
  • Remote Data Service 1.5, care a înlocuit Advanced Data Connector.

Această versiune a MDAC avea un defect de securitate care o făcea vulnerabilă la un atac de privilegii escaladat . Vulnerabilitatea a cauzat sistemelor care aveau atât IIS, cât și MDAC instalate pentru a oferi unui utilizator web neautorizat posibilitatea de a executa comenzi shell pe sistemul IIS ca utilizator privilegiat. Acest lucru a permis atacatorului să utilizeze MDAC pentru a tunela SQL și alte solicitări de date ODBC prin conexiunea publică la o rețea back-end privată atunci când se află pe un sistem IIS conectat la internet multi-homed . De asemenea, a permis utilizatorului să obțină acces neautorizat la fișiere securizate, nepublicate pe sistemul IIS

MDAC 1.5 a fost ultima versiune a componentei de acces la date acceptată în Windows NT 3.51 SP5.

MDAC 2.0

MDAC 2.0 a fost distribuit împreună cu SDK Access 2.0 2.0 și a inclus conținutul MDAC 1.5, ODBC 3.5 SDK și OLE DB 1.5 SDK și OLE DB pentru specificația OLAP . De asemenea, a inclus multe actualizări ale produsului de bază, inclusiv o caracteristică de securitate adăugată la RDS care a împiedicat utilizarea acestuia cu răutate pe un server IIS. Această versiune a fost inclusă în Windows NT 4.0 SP4 și, de asemenea, cu Visual Studio 6.0, care a venit cu SDK complet pentru acces la date.

MDAC 2.1

MDAC 2.1 a fost distribuit cu SQL Server 7.0 și SQL Server 6.5 SP5. MDAC 2.1 SP1 a fost distribuit cu Internet Explorer 5 și MDAC 2.1 SP1a (GA) a fost distribuit cu Microsoft Office 2000, BackOffice 4.5 și Visual Studio 98 SP3. Cu toate acestea, niciuna dintre aceste versiuni ale MDAC nu a fost lansată publicului larg prin intermediul World Wide Web . MDAC 2.1 SP2 a fost distribuit de pe site-ul Microsoft. Componentele incluse în 2.1 au fost:

  • ADO 2.1
  • RDS 2.1
  • OLE DB 2.1
  • furnizorul OLE DB pentru ODBC, SQL Server și Oracle
  • JRO 2.1
  • un șofer Jet
  • RDO.

Această versiune avea vulnerabilități de securitate, prin care un tampon necontrolat ar putea permite un atac de privilegii ridicat. Acest lucru a fost găsit ceva timp mai târziu și a afectat MDAC 2.1, 2.5 și 2.6 și a fost abordat într-un patch ulterior

MDAC 2.5

MDAC 2.5 a fost lansat pe 17 februarie 2000 și distribuit cu Windows 2000 , iar pachetele de servicii MDAC au fost lansate în paralel cu pachetele de servicii Windows 2000. Au fost distribuite și prin intermediul site-ului web Microsoft. Au fost lansate trei service pack-uri. Componentele incluse în 2.5 au fost:

  • ADO 2.5
  • ADO MD 2.5
  • ADOX 2.5
  • RDS 2.5
  • OLE DB 2.5
  • mulți furnizori OLE DB
  • JRO 2.5
  • ODBC 3.51
  • mulți șoferi ODBC
  • mulți șoferi Jet.

Au fost găsite mai multe probleme în această versiune a MDAC. Atunci când se utilizează OLE DB Session Pooling, Microsoft COM + va încerca să încarce și să descarce continuu OLE DB și ar putea apărea un conflict care a determinat ca OLE DB Session Pooling să ruleze la 100% utilizare CPU. Acest lucru a fost remediat mai târziu. Microsoft a publicat o listă completă de erori remediate în MDAC 2.5 Service Pack 2 și MDAC 2.5 Service Pack 3 . A existat, de asemenea, o vulnerabilitate de securitate (remediată ulterior) prin care a fost găsit un buffer necontrolat în driverul SQL Server. Acest defect a fost introdus în MDAC 2.5 SP2.

MDAC 2.6

MDAC 2.6 a fost lansat în septembrie 2000 și a fost distribuit prin web și cu Microsoft SQL Server 2000 MDAC 2.6 RTM, SP1 (lansat la 20 iunie 2001) și SP2 (lansat la 11 iunie 2002) au fost distribuite în paralel cu Microsoft SQL Server 2000 de pachete de servicii și ar putea fi, de asemenea, descărcate de pe site-ul web Microsoft.

Începând cu această versiune de MDAC, Microsoft Jet, Microsoft Jet OLE DB Provider și ODBC Desktop Database Drivers nu au fost incluse. În schimb, acestea ar putea fi instalate manual. Microsoft a lansat, de asemenea, o avertizare de avertizare că MDAC 2.6 nu ar trebui să fie instalat pe un cluster SQL Server 7.0, deoarece „dacă instalați MDAC 2.6 sau o versiune ulterioară pe orice nod din cluster, direct sau prin instalarea unui alt program, poate provoca o catastrofă eșecul agentului SQL Server sau al altor servicii SQL Server. " Această problemă a afectat Backup Exec 9.0 al Veritas Software pentru servere Windows, deoarece instalează Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) ca bază de date. Revizia 4367 a instalat MDAC versiunea 2.6 SP2 în timp ce revizuirea 4454 a instalat versiunea 2.7 SP1 MDAC, care nu a avut problema

MDAC 2.7

MDAC 2.7 a fost lansat în octombrie 2001 prin intermediul site-ului Microsoft. O versiune de reîmprospătare a fost lansată în aprilie 2002 prin lansarea Windows XP și prin intermediul site-ului web Microsoft. Versiunea 2.7 a fost disponibilă în engleză SUA , chineză (tradițională și simplificată), germană, japoneză, coreeană, portugheză braziliană , cehă , daneză, greacă, slovacă , slovenă , spaniolă, finlandeză, franceză, maghiară, italiană, olandeză , norvegiană, poloneză, Portugheză, rusă, suedeză și turcă . Ebraica și araba erau disponibile numai prin Windows XP.

Principala modificare a caracteristicii a fost suportul pentru sistemul de operare Microsoft pe 64 de biți , totuși suportul pentru Banyan VINES a fost eliminat și din această versiune a MDAC. Au existat mai multe probleme cunoscute: MDAC 2.7 a continuat să provoace probleme de conectivitate pe serverele grupate care rulează Microsoft SQL Server 6.5 sau SQL Server 7.0, fără soluții furnizate de Microsoft. Când creați sau configurați nume de surse de date ODBC (DSN) utilizând driverul ODBC Microsoft SQL Server, protocolul bibliotecii de rețea poate trece în mod neașteptat la TCP / IP , chiar dacă DSN a fost configurat pentru a utiliza țevi numite . Această problemă a fost găsită de reporterul InfoWorld Randall C. Kennedy , care a identificat că schimbarea a fost efectiv făcută în MDAC 2.6, dar nu a fost niciodată documentată. A fost descoperit la testarea sarcinilor de lucru ale bazei de date client / server pe un computer cu Windows XP; InfoWorld susține că, deși utilizarea generală a procesorului serverului a crescut cu doar 8% folosind TCP / IP, comutatoarele de context pe secundă au scăzut cu peste 150% (ceea ce este, desigur, imposibil, deoarece atunci veți avea o rată de comutare a contextului negativă - scăderea este fie 33 % sau 60%, în funcție de planeta pe care se afla autorul în momentul scrierii) pentru o sarcină de lucru de 10 utilizatori. Nu au fost impresionați că o schimbare funcțională fundamentală a comportamentului implicit al Net-Lib a avut loc fără mai mult de o mențiune trecătoare într-un document fără legătură. Utilizatorii Windows XP au întâmpinat uneori probleme de conectare la SQL Server deoarece SQL Server încearcă să utilizeze certificate pe care le găsește pe computerul local, cu toate acestea, dacă există mai multe certificate disponibile, nu știa pe care să le folosească. Când încercați să utilizați Microsoft Analysis Services 2000 RTM, uneori apare o eroare atunci când încercați să răsfoiți cuburi. Microsoft a descoperit, de asemenea, o problemă în programul de configurare Windows 95 , Windows 98 și Windows Me , care a împiedicat derularea înapoi a programului de instalare MDAC atunci când a întâmpinat o eroare de instalare.

Mai multe probleme de securitate au fost rezolvate de Microsoft pentru MDAC 2.7. David Litchfield de la Next Generation Security Software Ltd a raportat o vulnerabilitate de securitate care rezultă deoarece una dintre funcțiile ODBC din MDAC care este utilizată pentru conectarea la sursele de date conținea un buffer necontrolat. O altă vulnerabilitate care a fost remediată a fost una prin care un atacator putea răspunde la un mesaj de descoperire SQL Server difuzat de clienți cu un pachet special creat care ar putea provoca o depășire a bufferului. A fost găsit un alt defect prin care codul putea fi executat de la distanță atunci când atacatorul a răspuns la difuzare cu un alt pachet special creat.

MDAC 2.8

MDAC 2.8 a fost lansat în august 2003 și distribuit cu Microsoft Windows Server 2003 , precum și pe site-ul web Microsoft Data Access Technologies . Nu a introdus nicio caracteristică nouă produsului, dar a rezolvat o serie de erori și probleme de securitate - a fost eliminat un fișier reg (automatizează modificările registrului) care a făcut ca serverul să ruleze într-un mod „nesigur” prin care RDS putea fi exploatat pentru obține acces neautorizat la sistem și a fost impusă o nouă restricție asupra lungimii șirului de interogare Shape. Au existat, de asemenea, mai multe modificări ale administratorului ODBC.

La 23 mai 2005, Brad Rhodes (Manager de program principal al Microsoft Data Access Technologies) a anunțat că MDAC 2.8 SP1 a fost ultimul redistribuibil independent al MDAC pe care Microsoft îl va livra. MDAC este acum o componentă oficială a sistemului de operare Microsoft, deși acestea vor furniza remedieri în curs de eroare și securitate versiunilor lansate anterior ale versiunii distribuibile pe web. Cu toate acestea, Microsoft a creat o nouă componentă numită SQL Native Client (SQLNCLI), care este un API de acces la date autonom care a combinat bibliotecile OLE DB și ODBC într-o singură DLL. A fost format pentru a fi independent de MDAC, care depinde acum de starea în care se află sistemul de operare - un dezvoltator se conectează acum la această bibliotecă și evită situațiile în care o actualizare a sistemului de operare care actualizează MDAC rupe aplicațiile construite într-o versiune diferită de MDAC.

Windows 7 SP1 a întrerupt compatibilitatea MDAC 2.8. Software-ul compilat pe Windows 7 SP1 care se bazează pe MDAC ADO nu va funcționa pe versiunile Windows anterioare Windows 7 SP1 (inclusiv Windows 7 RTM, Vista, XP). Microsoft a oferit soluții pentru a rezolva această problemă pentru unele aplicații, dar aplicațiile VBA rămân afectate. Remedierea pentru această problemă a fost lansată în februarie 2012.

Windows DAC 6.0

Windows Vista nu va mai folosi MDAC, ci va folosi Windows DAC, care constă din versiuni actualizate ale componentelor ADO, OLE DB și ODBC. Potrivit Microsoft, „Windows DAC include unele modificări pentru a lucra cu Windows Vista, dar este aproape în întregime echivalent funcțional cu MDAC 2.8”.

Verificarea versiunii

Există două moduri de a verifica versiunea MDAC care este instalată pe un computer. Pentru Windows 2000, Windows XP și Windows Server 2003, o modalitate de verificare este prin programul Microsoft Component Checker , care compară valoarea fiecărei DLL MDAC instalate cu manifestul fișierului MDAC. A doua modalitate este să verificați cheia HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVerdin registrul Windows . Microsoft observă că aceste informații pot fi incorecte pentru versiunile MDAC anterioare versiunii 2.1, în comparație cu versiunile fișierelor MDAC instalate pe sistem

Versiune Data de lansare Inclus cu Caracteristici Probleme de securitate
1.0 August 1996
  • ADC - IIS 3.0
  • SDK OLE DB 1.1 (OLE DB 1.1 și ADO 1.0) - Visual Studio
  • Toate componentele incluse în Visual Interdev 1.0 și cu Active Server Pages (lansate în IIS 3.0)
  • ODBC 3.0
  • OLE DB 1.1
  • ADO 1.0
  • ADC 1.0
  • Drivere ODBC pentru baze de date Access / Jet, SQL Server și Oracle

Nu au fost publicate buletine

1.5

Septembrie 1997 - martie 1998
  • Microsoft Internet Explorer 4.0
  • Internet Client SDK 4.0 (de pe CD emis la Microsoft PDC)
  • ODBC 3.5
  • OLE DB 1.5
  • ADO 1.5
  • RDS 1.5 (ADC 1.0 înlocuit)
1,5a Septembrie 1997 – martie 1998

Eliberarea serviciului

1,5b Septembrie 1997 – martie 1998

Eliberarea serviciului

1,5c Septembrie 1997 – martie 1998
  • S-au rezolvat problemele cu filetarea ADO și ODBC Connection Pooling
  • A venit doar cu componente de runtime ADO / MDAC
2.0 1 iulie 1998
  • Visual Studio 98
  • SDK pentru acces la date 2.0
  • SDK ODBC 3.5
  • SDK OLE DB 1.5
  • OLE DB pentru specificațiile OLAP
2.0SP1 1 iulie 1998
  • Windows NT 4.0 SP4

Remediere Y2K pentru Windows NT 4.0

2.0SP2 1 iulie 1998
  • Site-ul Microsoft

Remediere Y2K pentru toate platformele

2.1 11 iulie 1998
  • SQL Server 7.0
  • SQL Server 6.5 SP5
  • ADO 2.1
  • RDS 2.1
  • OLE DB 2.1
  • Furnizor OLE DB pentru ODBC, SQL Server și Oracle
  • JRO 2.1
  • Driver ODBC
  • Șofer de jet
  • RDO
2.1 SP1 15 martie 1999
  • Internet Explorer 5.0
  • Windows 98 Ediția a doua
2.1 SP1a (GA) 1 aprilie 1999
  • Office 2000
  • BackOffice 4.5
  • Visual Studio 98 SP3
  • Internet Explorer 5.0a (instalare minimă)
2.1 SP2 Iulie 1999
2.5 17 februarie 2000
  • Windows 2000
  • ADO 2.5
  • ADO MD 2.5
  • ADOX 2.5
  • RDS 2.5
  • OLE DB 2.5
  • Furnizor OLE DB pentru driverul ODBC pentru:
    • SQL
    • Server
    • Căutare server de site
    • Publicarea pe internet
    • Jet 4.0 (Acces 2000)
    • Oracol
    • Servicii de indexare (Index Server)
    • Microsoft Data Shaping Services
    • Servicii OLAP
    • Pachete DTS
    • Servicii Microsoft Directory
    • Server DTS Flat File
    • OLE DB Furnizor simplu
  • JRO 2.5
  • ODBC 3.51
  • un driver ODBC pentru
    • Microsoft Access
    • SQL Server
    • Microsoft Excel
    • Text
    • Visual FoxPro
    • FoxPro VFP
    • dBase
    • dBase VFP
    • Paradox
    • Oracol
  • Drivere de jet pentru:
    • excela
    • Microsoft Exchange
    • Acces
    • fișiere text
    • Lotus 1-2-3
    • Paradox
    • xBase
2.5 SP1 31 iulie 2000
  • Windows 2000 SP1
2,5 SP2 Aprilie 2000
  • Windows 2000 SP2
2.5 SPS3 Decembrie 2003
  • Windows 2000 SP3
2.6 Septembrie 2000
  • SQL Server 2000
Nu este inclus (instalat manual):
  • Microsoft Jet
  • Furnizor Microsoft Jet OLE DB
  • Drivere ODBC Desktop Database
2.6 SP1 Mai 2001
  • SQL Server 2000 SP1
2.6 SP2 Mai 2002
  • SQL Server 2000 SP2
2.7 Octombrie 2001
  • Windows XP
  • Suport pentru sisteme de operare pe 64 de biți
  • Suportul Banyan VINES a scăzut
2.8 August 2003
  • Windows Server 2003

S-au remediat erori și probleme de securitate

2,8 SP1 Mai 2005
  • SQL Server 2000 SP4
  • Windows XP SP2

S-au remediat erorile

2,8 SP2 Martie 2005
  • Windows Server 2003 SP1
9.0 Niciodată eliberat
  • Visual Studio 2005 Beta 1 (eliminat în versiunile ulterioare)
  • SQL Server 2005 Beta 1 (eliminat în versiunile ulterioare)
Windows DAC 6.0 (o variantă a MDAC pentru utilizare cu Vista) Noiembrie 2006
  • Numărul versiunii sincronizat cu versiunea Windows
  • Nu există alte caracteristici noi

Referințe

Lecturi suplimentare

linkuri externe