Microsoft Data Access-komponenter - Microsoft Data Access Components
|
MDAC gir et enhetlig rammeverk for tilgang til en rekke datakilder på Windows- plattformen
| |
| Utvikler (er) | Microsoft |
|---|---|
| Endelig utgivelse | 2.8 SP1 (2.81.1117.6) / Mai 2005 |
| Operativsystem | Windows 98 , Windows ME , Windows NT 4 , Windows 2000 , Windows XP , Windows Server 2003 , Windows 7 , Windows 10 |
| Type | Database |
| Tillatelse | Gratisprogramvare |
| Nettsted | msdn2 |
Microsoft Data Access Components ( MDAC ; også kjent som Windows DAC ) er et rammeverk av sammenhengende Microsoft- teknologier som gir programmerere en ensartet og omfattende måte å utvikle applikasjoner som har tilgang til nesten hvilken som helst datalager. Komponentene inkluderer: ActiveX Data Objects (ADO), OLE DB og Open Database Connectivity (ODBC). Det har også vært flere utdaterte komponenter, for eksempel Microsoft Jet Database Engine , MSDASQL (OLE DB-leverandøren for ODBC) og Remote Data Services (RDS). Noen komponenter har også blitt foreldet , for eksempel tidligere Data Access Objects API og Remote Data Objects .
Den første versjonen av MDAC ble utgitt i august 1996. På den tiden uttalte Microsoft at MDAC var mer et konsept enn et frittstående program og ikke hadde noen utbredt distribusjonsmetode. Senere ga Microsoft ut oppgraderinger til MDAC som nettbaserte omfordelbare pakker. Til slutt ble senere versjoner integrert med Microsoft Windows og Internet Explorer , og i MDAC 2.8 SP1 sluttet de å tilby MDAC som en omfordelbar pakke.
Gjennom historien har MDAC vært gjenstand for flere sikkerhetsfeil , noe som førte til angrep som et eskalert privilegiumangrep , selv om sårbarhetene generelt ble løst i senere versjoner og ganske raskt. Den nåværende versjonen er 2,8 servicepakke 1, men produktet har hatt mange forskjellige versjoner, og mange av komponentene er utfaset og erstattet av nyere Microsoft-teknologier. MDAC er nå kjent som Windows DAC i Windows Vista .
Arkitektur
Den siste versjonen av MDAC (2.8) består av flere samhandlende komponenter, som alle er Windows- spesifikke bortsett fra ODBC (som er tilgjengelig på flere plattformer). MDAC-arkitektur kan sees på som tre lag: et programmeringsgrensesnittlag bestående av ADO og ADO.NET , et databasetilgangslag utviklet av databaseleverandører som Oracle og Microsoft ( OLE DB , .NET-administrerte leverandører og ODBC- drivere), og selve databasen. Disse komponentlagene gjøres alle tilgjengelige for applikasjoner via MDAC API . Den Microsoft SQL Server Network Library, en proprietær tilgang metoden er spesifikk for Microsoft SQL Server, er også inkludert i MDAC. Utviklere av Windows-applikasjoner oppfordres til å bruke ADO eller ADO.NET for datatilgang, fordelen er at brukere av applikasjonsprogrammet ikke er begrenset i valg av databasearkitektur, bortsett fra at det skal støttes av MDAC. Naturligvis har utviklere fortsatt valget om å skrive applikasjoner som har direkte tilgang til OLE DB og ODBC.
Microsoft SQL Server nettverksbibliotek
Microsoft SQL Server Network Library (også kjent som Net-Lib) brukes av Microsoft SQL Server til å lese og skrive data ved hjelp av mange forskjellige nettverksprotokoller . Selv om Net-Lib er spesifikt for SQL Server, inkluderer Microsoft det med MDAC. SQL Server bruker Open Data Services (ODS) -biblioteket til å kommunisere med Net-Lib, som grensesnitt direkte med Windows NT- operativsystemlinjens Win32- undersystem . SQL Server-nettverksbiblioteket styres ved bruk av et klientnettverksverktøy, som følger med SQL Server.
Hver Net-Lib-støttede nettverksprotokoll har en egen driver (ikke forveksles med en enhetsdriver ), og har støtte for et øktlag i protokollstakken. Det er to generelle typer Net-Lib: den primære og den sekundære. Den primære Net-Lib består av en Super Socket Net-Lib og Shared Memory Net-Lib, mens det er mange sekundære Net-Libs, inkludert TCP / IP og navngitte rør nettverksbiblioteker (navngitte rør er en metode for å kommunisere med andre prosesser via en system-vedvarende rørledning som er gitt en identitet). Microsoft OLE DB-leverandøren for SQL Server (SQLOLEDB) kommuniserer via primære Net-Libs.
Super Socket Net-Lib håndterer kommunikasjon mellom datamaskiner og koordinerer de sekundære Net-Libs - selv om TCP / IP-sekundær Net-Lib er et unntak ved at den ringer direkte til Windows Sockets 2 API. Den Banyan VINES- , Talk , ServerNet , IPX / SPX , Giganettet , og RPC Net-Libs ble utelatt fra MDAC 2,5 utover. Nettverksbiblioteksruteren hadde jobben med å administrere alle disse protokollene, men nå er det bare de navngitte pipene sekundære Net-Lib som administreres av ruteren. Super Socket Net-Lib håndterer også datakryptering via bruk av Windows SSL API.
Delt minne Net-Lib, derimot, styrer forbindelser mellom flere forekomster av SQL Server som finnes på en datamaskin. Den bruker et delt minneområde for å kommunisere mellom prosessene. Dette er iboende sikkert; det er ikke behov for datakryptering mellom forekomster av SQL Server som finnes på en datamaskin, ettersom operativsystemet ikke tillater noen annen prosesstilgang til forekomstenes område med delt minne.
Net-Lib er også i stand til å støtte etterligning av en innlogget brukeres sikkerhetskontekst for protokoller som støtter autentiserte tilkoblinger (kalt pålitelige forbindelser ). Dette gjør at Net-Lib kan tilby en integrert påloggingsautentiseringsmekanisme via bruk av Windows Authentication . Windows-godkjenning støttes ikke på Windows 98 eller Windows Me.
OLE DB
OLE DB (også kalt OLEDB eller OLE-DB) gir MDAC-applikasjoner tilgang til forskjellige typer ([data]) butikker på en ensartet måte. Microsoft har brukt denne teknologien til å skille applikasjonen fra data, og kan lagre datalageret den trenger for å få tilgang til nettstedet. Dette ble gjort fordi forskjellige applikasjoner trenger tilgang til forskjellige typer og datakilder, og ikke nødvendigvis trenger å vite hvordan man får tilgang til teknologispesifikk funksjonalitet. Teknologien er konseptuelt delt inn i forbrukere og leverandører . Forbrukerne er applikasjonene som trenger tilgang til dataene, og leverandøren er programvarekomponenten som avslører et OLE DB-grensesnitt ved bruk av Component Object Model (eller COM).
OLE DB er databasetilgangsgrensesnittsteknologien som brukes av MDAC. OLE DB-leverandører kan opprettes for å få tilgang til enkle datalagre som en tekstfil eller regneark , til komplekse databaser som Oracle og SQL Server . Men fordi forskjellig datalagringsteknologi kan ha forskjellige muligheter, kan det hende at OLE DB-leverandører ikke implementerer alle mulige tilgjengelige grensesnitt. Funksjonene som er tilgjengelige implementeres ved bruk av COM-objekter - en OLE DB-leverandør vil kartlegge datalagreteknologiens funksjonalitet til et bestemt COM-grensesnitt. Microsoft kaller tilgjengeligheten av et grensesnitt for å være "leverandørspesifikk", ettersom det kanskje ikke gjelder, avhengig av databaseteknologien som er involvert. I tillegg kan leverandører imidlertid også utvide funksjonene til et datalager; disse funksjonene er kjent som tjenester på Microsoft-språk.
Den Microsoft OLE DB Provider for SQL Server (SQLOLEDB) er OLE DB-leverandør som Microsoft tilbyr for Microsoft SQL Server fra versjon 6.5 og oppover.
Universell datalink
Universelle datalinkfiler (eller '.udl-filer') gir et felles brukergrensesnitt for å spesifisere tilkoblingsattributter. En bruker kan bruke en dialogboks for datalinkegenskaper for å lagre tilkoblingsinformasjon i en .udl-fil som et alternativ til å direkte spesifisere dem for hånd i en tilkoblingsstreng. Følgelig gir disse filene et praktisk nivå av indireksjon . I tillegg spesifiserer dialogboksen et antall alternative OLE DB-dataleverandører for en rekke målapplikasjoner.
ODBC
Open Database Connectivity (ODBC) er et innfødt grensesnitt som er tilgjengelig via et programmeringsspråk (vanligvis C ) som kan ringe til et eget bibliotek . I MDAC er dette grensesnittet definert som en DLL. Det kreves en egen modul eller driver for hver database som må åpnes. Funksjonene i ODBC API er implementert av disse DBMS-spesifikke driverne. Driveren som Microsoft tilbyr i MDAC kalles SQL Server ODBC Driver (SQLODBC), og (som navnet tilsier) er designet for Microsofts SQL Server. Den støtter SQL Server v6.5 og oppover. ODBC lar programmer bruke SQL- forespørsler som får tilgang til databaser uten å måtte kjenne de proprietære grensesnittene til databasene. Den håndterer SQL-forespørselen og konverterer den til en forespørsel som det enkelte databasesystemet forstår. I følge Microsoft, "Etter SQL Server 2012 vil ODBC-driveren bli oppdatert for de nyeste serverfunksjonene, inkludert Microsoft Windows Azure SQL Database, og utgitt som Microsoft ODBC-driver for SQL Server."
EN GJØR
ActiveX Data Objects ( ADO ) er et høyt nivå programmeringsgrensesnitt til OLE DB. Den bruker en hierarkisk objektmodell for å la applikasjoner programmatisk opprette, hente, oppdatere og slette data fra kilder som støttes av OLE DB. ADO består av en serie hierarkiske COM-baserte objekter og samlinger, et objekt som fungerer som en beholder for mange andre objekter. En programmerer kan få direkte tilgang til ADO-objekter for å manipulere data, eller kan sende et SQL- spørsmål til databasen via flere ADO-mekanismer. ADO består av ni objekter og fire samlinger .
Samlingene er:
- Felter: Denne samlingen inneholder et sett med feltobjekter. Samlingen kan brukes i enten et Recordset-objekt eller i et Record-objekt. I et Recordset-objekt tilsvarer hvert av feltobjektene som utgjør Fields-samlingen, en kolonne i det Recordset-objektet. I et Record-objekt kan et felt være en absolutt eller relativ URL som peker inn i et trestrukturert navneområde (brukes til semistrukturerte dataleverandører som Microsoft OLE DB Provider for Internet Publishing) eller som en referanse til standard Stream-objekt tilknyttet med det Record-objektet.
- Egenskaper: Et objekt kan ha mer enn ett eiendomsobjekt, som finnes i objektets Egenskaper-samling.
- Parametere: Et kommandoobjekt kan ha flere parameterkommandoer for å endre den forhåndsdefinerte oppførselen, og hvert av parameterobjektene finnes i kommandoobjektets parametersamling
- Feil: Alle feilopprettede feil sendes til en samling feilobjekter, mens selve feilsamlingen er inneholdt i et tilkoblingsobjekt. Når en ADO-operasjon oppretter en feil, tømmes samlingen og det opprettes en ny gruppe feilobjekter i samlingen.
Objektene er:
-
Tilkobling: Forbindelsesobjektet er ADOs forbindelse til et datalager via OLE DB. Tilkoblingsobjektet lagrer informasjon om økten og gir metoder for å koble til datalageret. Siden noen datalagre har forskjellige metoder for å opprette en forbindelse, kan det hende at enkelte metoder ikke støttes i tilkoblingsobjektet for bestemte OLE DB-leverandører. Et tilkoblingsobjekt kobles til datalageret ved å bruke 'Åpne' -metoden med en tilkoblingsstreng som spesifiserer forbindelsen som en liste over nøkkelverdipar (for eksempel: "
Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';"). Starten må identifisere typen datalagertilkobling som tilkoblingsobjektet krever. Dette må være enten: - Kommando: Etter at tilkoblingsobjektet har opprettet en økt til datakilden, sendes instruksjoner til dataleverandøren via kommandoobjektet. Kommandoobjektet kan sende SQL-spørringer direkte til leverandøren ved bruk av CommandText- egenskapen, sende en parametrerte spørring eller lagret prosedyre ved bruk av et parameterobjekt eller Parameters- samling eller kjøre en spørring og returnere resultatene til et datasettobjekt via Utfør metode. Det er flere andre metoder som kan brukes i kommandoobjektet relatert til andre objekter, for eksempel Stream, RecordSet eller Connection-objekter.
-
Platesett: Et platesett er en gruppe poster, og kan enten komme fra en basistabell eller som et resultat av et spørsmål til tabellen. RecordSet-objektet inneholder en Fields- samling og en Properties- samling. Feltsamlingen er et sett med feltobjekter, som er de tilsvarende kolonnene i tabellen. Egenskaper-samlingen er et sett med eiendomsobjekter, som definerer en bestemt funksjonalitet til en OLE DB-leverandør. RecordSet har mange metoder og egenskaper for å undersøke dataene som finnes i den. Postene kan oppdateres i platesettet ved å endre verdiene i posten og deretter ringe på
UpdateellerUpdateBatchmetoden. Å legge til nye poster utføres gjennomAddNewfunksjonen og deretter ved å ringe påUpdateellerUpdateBatchmetoden. Postene slettes også i platesettet med Delete-metoden og deretter ved å ringe på Update-metoden. Men hvis slettingen av en eller annen grunn ikke kan forekomme, for eksempel på grunn av brudd på referanseintegritet , vil platesettet forbli i redigeringsmodus etter samtalen tilUpdatemetoden. Programmereren må eksplisitt påkalleCancelUpdatefunksjonen for å avbryte oppdateringen. I tillegg kan ADO tilbakeføre transaksjoner (hvis dette støttes) og kansellere batchoppdateringer. Rekordsett kan også oppdateres på en av tre måter: via en øyeblikkelig oppdatering, via en batchoppdatering eller ved bruk av transaksjoner:-
Umiddelbar: Platesettet er låst ved hjelp av
adLockOptimisticelleradLockPessimisticlås. Dataene oppdateres ved datakilden etter at posten er endret ogUpdatemetoden kalles. -
Batch: Platesettet låses ved hjelp av dataene og oppdateres i en midlertidig buffer
adLockBatchOptimistichver gangUpdatedet kalles. Til slutt, nårUpdateBatchkalles, blir dataene fullstendig oppdatert tilbake ved datakilden. Dette har fordelen av at det hele gjøres i minnet, og hvis det oppstår et problem,UpdateCancelblir det kalt og oppdateringene blir ikke sendt til datakilden -
Transaksjon: Hvis OLE DB-leverandøren tillater det, kan transaksjoner brukes. For å starte transaksjonen, påkaller programmereren
BeginTransmetoden og gjør de nødvendige oppdateringene. Når de er ferdige, påkaller programmererenCommitTransmetoden.RollbackTranskan påberopes for å avbryte eventuelle endringer som er gjort i transaksjonen og rulle tilbake databasen til staten før transaksjonen startet
-
Umiddelbar: Platesettet er låst ved hjelp av
- Post: Dette objektet representerer en post i databasen, og inneholder en feltsamling. Et RecordSet består av en samling Record-objekter.
- Strøm: En strøm, hovedsakelig brukt i et RecordSet-objekt, er et middel til å lese og skrive en strøm av byte. Det brukes hovedsakelig for å lagre et platesett i et XML-format, for å sende kommandoer til en OLE DB-leverandør som et alternativ til CommandText-objektet og for å inneholde innholdet i en binær- eller tekstfil.
- Parameter: En parameter er et middel til å endre oppførselen til en felles funksjonalitet, for eksempel kan en lagret prosedyre ha forskjellige parametere sendt til den, avhengig av hva som må gjøres; disse kalles parameteriserte kommandoer .
- Felt: Hvert postobjekt inneholder mange felt, og et RecordSet-objekt har også et tilsvarende feltobjekt. RecordSet-objektets feltobjekt tilsvarer en kolonne i databasetabellen som den refererer til.
- Eiendom: Dette objektet er spesifikt for OLE DB-leverandøren og definerer en evne som leverandøren har implementert. Et eiendomsobjekt kan enten være en innebygd eiendom - det er en veldefinert eiendom implementert av ADO allerede og kan derfor ikke endres - eller en dynamisk egenskap - definert av den underliggende dataleverandøren og kan endres
- Feil: Når en OLE DB-leverandøren feilen oppstår under bruk av ADO, vil en feil objekt opprettes i feil samlingen. Andre feil går imidlertid ikke inn i et feilobjekt. For eksempel lagres eventuelle feil som oppstår ved manipulering av data i et RecordSet- eller feltobjekt i en statusegenskap.
ADO.NET
ADO.NET er den siste versjonen av ADO (etter ADO 2.8, nå ofte referert til som ADO Classic) og er en del av MDAC 2.8-stakken ved siden av klassisk ADO. Den er bygget opp rundt Microsoft .NET . Selv om noen ganger sett på som et evolusjonært steg opp fra ADO, ble noen grunnleggende strukturelle endringer gjort av Microsoft. ADO.NET kjører gjennom en .NET Managed Provider, en modifisert versjon av en OLE DB-leverandør spesielt designet for .NET. Objektstrukturen er ikke lenger bygget rundt et Recordset-objekt. I stedet brukes et datasettobjekt til å inneholde data samlet fra flere kilder. Dette er gjennomsiktig for programmereren. I motsetning til det gamle ADO Recordset, fremmer datasettets design bruk av frakoblede data. Konseptuelt kan et datasettobjekt sees på som en liten relasjonsdatabase i minnet som tillater manipulering av data i alle retninger. For å overføre endringer tilbake til databasen, brukes et DataAdapter- objekt som overfører data fra mellom datakilden og DataSet-objektet. Markører ble også utfaset i ADO.NET, og ble erstattet med et DataReader- objekt, som brukes til å effektivt behandle en stor liste med resultater en post om gangen uten å lagre dem.
Utfasede og foreldede komponenter
MDAC er et komponentrammeverk som utvikler seg kontinuerlig. Som sådan har det vært flere komponenter som tidligere var en del av det, men som siden har blitt utfaset eller helt fjernet fra rammen.
Microsoft Jet Database Engine og JRO
Jet står for Joint Engine Technology og var en databasemotor som ble brukt til Microsoft Access , Microsoft Exchange Server og Visual Basic . Jet var en del av et Relational Database Management System (RDBMS) og tilbød et enkelt grensesnitt som annen programvare kunne bruke for å få tilgang til Microsoft-databaser. Jet ga også støtte for sikkerhet, referanseintegritet , transaksjonsbehandling , indeksering , arkiv- og sidelåsing og datareplikering. I senere versjoner av Jet ble motoren utvidet til å kjøre SQL- spørringer, lagre karakterdata i Unicode- format, opprette visninger og tillatt toveis replikering med Microsoft SQL Server. Den har siden blitt erstattet av MSDE .
Det var tre moduler til Jet. Den ene var Native Jet ISAM Driver , et Jet Dynamic Link Library (DLL) som direkte kunne manipulere Microsoft Access-databasefiler (MDB), som var en modifisert form av en Indexed Sequential Access Method (ISAM) -database. En annen av modulene var ISAM-drivere , DLL-er som tillot tilgang til ISAM-databaser, blant annet Xbase- , Paradox- , Btrieve- og FoxPro- filer. Den siste modulen var Data Access Objects (DAO) DLL , DAO ga programmerere tilgang til Jet-motoren. Det var i utgangspunktet et objektorientert dataspråk som ble brukt av Access Basic og Visual Basic applikasjonsutviklere for å få tilgang til Jet.
Tilsvarende ble Microsoft Jet OLE DB Provider and Replication Objects (JRO) som tillot replikering mellom Jet-datakilder fjernet fra MDAC 2.6
MSDASQL og Oracle ODBC
Microsoft OLE DB Provider for ODBC, eller MSDASQL, var en OLE DB-leverandør for å gi ActiveX Data Objects tilgang til databaser via en hvilken som helst ODBC-driver. Microsoft leverte flere OLE-DB-leverandører (for indekseringstjenesten, Active Directory , Jet, SQL Server, Oracle ( MSDAORA) og Internet Publishing), men med mindre annet er bestemt, misligholdte ADO MSDASQL som standardleverandør. Etter MDAC 2.5 støttet både Oracle ODBC-driveren og MSDASQL Oracle 7 og delvis Oracle 8i. Funksjoner som ikke ble støttet var:
- CLOB , BLOB , BFILE , NCHAR , NCLOB og NVARCHAR2 Oracle datatyper
- Unicode-støtte for Oracle 7.x og 8i
- flere klientforekomster av Oracle
- nestede ytre sammenføyninger
Microsoft utfaset opprinnelig MSDASQL-komponenten for sine 64-biters operativsystemer, og Microsoft Oracle ODBC-driveren ble senere erstattet av en .NET Managed Oracle Provider, som støttet Oracle 9i. Imidlertid leveres Windows Server 2008 og Windows Vista SP1 med en 64-biters versjon av MSDASQL.
Eksterne datatjenester (RDS)
Remote Data Services (RDS) tillot henting av et sett med data fra serveren, som klienten deretter endret på en eller annen måte og deretter sendte tilbake til serveren for videre behandling. Med den populære adopsjonen av Transact-SQL , som utvider SQL med slike programmeringskonstruksjoner som sløyfer og betingede utsagn, ble dette mindre nødvendig, og det ble til slutt avskrevet i MDAC 2.7. Microsoft produserte SOAP Toolkit 2.0, som lar klienter gjøre dette via en åpen XML- basert standard.
SQLXML
SQLXML ble designet for SQL Server 2000, men ble avviklet med MDAC 2.6. Det tillot Microsofts relasjonsdatabase å bli sett av XPath og tillot data å kunne vises som en XML- fil. Den har faktisk ikke blitt utfaset, men er fjernet fra senere versjoner av MDAC, selv om Microsoft gir den som en nedlastbar komponent og vil støtte den på deres 64-biters operativsystemer.
Forældede komponenter
Flere komponenter er fullstendig fjernet fra MDAC av Microsoft og støttes ikke lenger. De er:
- ESQL / C: Innebygd SQL (også kjent som E-SQL eller ESQL / C) er en måte å bruke SQL når du programmerer i Visual C. Microsoft droppet støtte for dette etter at SQL Server 6.5 ble utgitt, selv om de lisensierte noe av ESQL / C kjøretidsmiljø til et selskap som heter Micro Focus , som utvikler COBOL kompilatorer og verktøy
- DAO: DAO, eller Data Access Objects var et objektorientert grensesnitt opprettet av Microsoft som ga tidlige versjoner av Microsoft Access og Visual Basic tilgang til Jet-databasemotoren . Senere (i versjon 3.5) klarte den å omgå Jet-motoren helt og få direkte tilgang til ODBC -datakilder.
- RDO: Remote Data Objects , eller RDO, var en Microsoft- teknologi som tillot oppretting av grensesnitt som direkte kalte på ODBC. RDO versjon 2.0 var den endelige versjonen utviklet av Microsoft.
- DB-Library: et C-basert API som tillot et program å samhandle med SQL Server. Den støttes ikke på noe produkt etter SQL Server 2000, og ingen funksjoner ble lagt til etter SQL Server 6.5.
Historie
Microsoft har gitt ut flere versjoner av MDAC over tid. Distribusjonsmetoden har variert og funksjonssettet er forskjellig for hver versjon.
MDAC 1.0
MDAC 1.0 ble først utgitt i august 1996. Ifølge Microsoft eksisterte "MDAC 1.0 mer som konsept enn et koordinert, frittstående oppsettprogram." MDAC 1.0-stakken besto av ODBC 3.0, OLE DB 1.1, ADO 1.0 og Advanced Data Connector (ADC) 1.0 - som ifølge Microsoft var forløperen til Remote Data Service for MDAC 1.5. Den inkluderte også ODBC-drivere for Access / Jet, SQL Server og Oracle- databaser. MDAC 1.0 ble utgitt via flere mekanismer: Advanced Data Connector leveres med Internet Information Server (IIS) 3.0 og som en nedlastbar cab-fil ; OLE DB 1.1 og ADO 1.0 ble levert med OLE DB 1.1 SDK, som fulgte med Visual Studio 97 og også var nedlastbar. MDAC 1.0 kom med Active Server Pages, som i seg selv kom i IIS 3.0, og kom også med Visual InterDev 1.0.
MDAC 1.5
MDAC 1.5 ble utgitt mellom september 1997 og mars 1998, og involverte en mer sentralisert distribusjonsmekanisme enn MDAC 1.0. Den ble gitt ut med Microsoft Internet Explorer 4.0, Internet Client SDK 4.0 og gjennom en CD-ROM gitt på 1997 Professional Developers Conference (PDC). Det var fem versjoner av MDAC 1.5:
- MDAC 1.5 (første versjon): følger med Internet Explorer 4.0 og Internet Client SDK.
- MDAC 1.5a: kan lastes ned fra Microsofts nettsted
- MDAC 1.5b: fulgte med Windows NT 4.0 Option Pack & Office 97
- MDAC 1.5c: faste problemer med ADO-threading og ODBC Connection Pooling og ble distribuert via Microsofts nettsted. Den fulgte bare med ADO / MDAC kjøretidskomponenter.
- MDAC 1.5d: fulgte med Windows 98 og Internet Explorer 4.01 service pack 1.
De forskjellige versjonene av MDAC 1.5 besto av:
- ODBC 3.5
- OLE DB 1.5
- ADO 1.5
- Remote Data Service 1.5, som erstattet Advanced Data Connector.
Denne versjonen av MDAC hadde en sikkerhetsfeil som gjorde den sårbar for et eskalert rettighetsangrep . Sårbarheten forårsaket systemer som hadde både IIS og MDAC installert for å gi en uautorisert nettbruker muligheten til å utføre skallkommandoer på IIS-systemet som en privilegert bruker. Dette tillot angriperen å bruke MDAC til å tunnelere SQL og andre ODBC-dataforespørsler gjennom den offentlige forbindelsen til et privat back-end-nettverk når det er på et multi-hjem Internett-tilkoblet IIS-system. Det tillot også brukeren å få uautorisert tilgang til sikrede, ikke-publiserte filer på IIS-systemet
MDAC 1.5 var den siste utgivelsen av datatilgangskomponenter som ble støttet under Windows NT 3.51 SP5.
MDAC 2.0
MDAC 2.0 ble distribuert med Data Access 2.0 SDK og inkluderte innholdet i MDAC 1.5, ODBC 3.5 SDK og OLE DB 1.5 SDK, og OLE DB for OLAP- spesifikasjon. Det hadde også inkludert mange oppdateringer til kjerneproduktet, inkludert en sikkerhetsfunksjon lagt til RDS som forhindret at den ble brukt skadelig på en IIS-server. Denne versjonen ble inkludert i Windows NT 4.0 SP4, og også med Visual Studio 6.0, som fulgte med full Data Access SDK.
MDAC 2.1
MDAC 2.1 ble distribuert med SQL Server 7.0 og SQL Server 6.5 SP5. MDAC 2.1 SP1 ble distribuert med Internet Explorer 5 og MDAC 2.1 SP1a (GA) ble distribuert med Microsoft Office 2000, BackOffice 4.5 og Visual Studio 98 SP3. Imidlertid ble ingen av disse versjonene av MDAC utgitt for allmennheten via internett . MDAC 2.1 SP2 ble distribuert fra Microsofts nettsted. Komponentene som ble inkludert i 2.1 var:
- ADO 2.1
- RDS 2.1
- OLE DB 2.1
- OLE DB-leverandøren for ODBC, SQL Server og Oracle
- JRO 2.1
- en Jet-sjåfør
- RDO.
Denne versjonen hadde sikkerhetsproblemer der en ukontrollert buffer kunne tillate et forhøyet privilegiumangrep. Dette ble funnet en stund senere, og det påvirket MDAC 2.1, 2.5 og 2.6 og ble adressert i en senere oppdatering
MDAC 2.5
MDAC 2.5 ble utgitt 17. februar 2000 og distribuert med Windows 2000 , og MDAC-servicepakkene ble gitt ut parallelt med Windows 2000-servicepakkene. De ble også distribuert gjennom Microsofts nettsted. Tre servicepakker ble utgitt. Komponentene som ble inkludert i 2.5 var:
- ADO 2.5
- ADO MD 2.5
- ADOX 2.5
- RDS 2.5
- OLE DB 2.5
- mange OLE DB-leverandører
- JRO 2.5
- ODBC 3.51
- mange ODBC-drivere
- mange Jet-drivere.
Flere problemer ble funnet i denne versjonen av MDAC. Når du bruker OLE DB Session Pooling, vil Microsoft COM + prøve å kontinuerlig laste og laste ut OLE DB, og det kan oppstå en konflikt som førte til at OLE DB Session Pooling kjørte med 100% CPU-bruk. Dette ble senere løst. Microsoft publiserte en full liste over feil som er løst i MDAC 2.5 Service Pack 2 og MDAC 2.5 Service Pack 3 . Det eksisterte også et sikkerhetsproblem (senere løst) der det ble funnet en ukontrollert buffer i SQL Server-driveren. Denne feilen ble introdusert i MDAC 2.5 SP2.
MDAC 2.6
MDAC 2.6 ble utgitt i september 2000 og ble distribuert gjennom nettet og med Microsoft SQL Server 2000 ble MDAC 2.6 RTM, SP1 (utgitt 20. juni 2001) og SP2 (utgitt 11. juni 2002) distribuert parallelt med Microsoft SQL Server 2000 servicepakker, og kan også lastes ned fra Microsofts nettsted.
Fra og med denne versjonen av MDAC var ikke Microsoft Jet, Microsoft Jet OLE DB Provider og ODBC Desktop Database Drivers inkludert. I stedet kan disse installeres manuelt. Microsoft ga også ut en advarsel om at MDAC 2.6 ikke skal installeres på en SQL Server 7.0-klynge, fordi "hvis du installerer MDAC 2.6 eller nyere på en hvilken som helst node i klyngen, direkte eller gjennom installasjon av et annet program, kan det føre til en katastrofal feil på SQL Server Agent eller andre SQL Server-tjenester. " Dette problemet påvirket Veritas Software Backup Exec 9.0 for Windows-servere, fordi det installerer Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) som sin database. Revisjon 4367 installerte MDAC versjon 2.6 SP2 mens revisjon 4454 installerte MDAC versjon 2.7 SP1, som ikke hadde problemet
MDAC 2.7
MDAC 2.7 ble utgitt i oktober 2001 via Microsofts nettsted. En oppdateringsutgivelse ble utgitt i april 2002 gjennom utgivelsen av Windows XP og gjennom Microsofts nettsted. Versjon 2.7 var tilgjengelig på amerikansk engelsk , kinesisk (tradisjonell og forenklet), tysk, japansk, koreansk, brasiliansk portugisisk , tsjekkisk , dansk, gresk, slovakisk , slovensk , spansk, finsk, fransk, ungarsk, italiensk, nederlandsk , norsk, polsk, Portugisisk, russisk, svensk og tyrkisk . Hebraisk og arabisk var bare tilgjengelig via Windows XP.
Hovedfunksjonsendringen var støtte for Microsofts 64-biters operativsystem, men støtte for Banyan VINES ble også droppet fra denne versjonen av MDAC. Det var flere kjente problemer: MDAC 2.7 fortsatte å forårsake tilkoblingsproblemer på klyngede servere som kjører Microsoft SQL Server 6.5 eller SQL Server 7.0, uten løsning gitt av Microsoft. Når du oppretter eller konfigurerer ODBC -datakildenavn (DSN-er) ved hjelp av Microsoft SQL Server ODBC-driveren, kan nettverksbiblioteksprotokollen uventet bytte til TCP / IP , selv om DSN var konfigurert til å bruke navngitte rør . Dette problemet ble funnet av InfoWorld- reporter Randall C. Kennedy , som identifiserte at endringen faktisk ble gjort i MDAC 2.6, men ble aldri dokumentert. Det ble oppdaget ved testing av klient / server databasearbeid på en Windows XP-datamaskin; InfoWorld hevder at selv om den samlede server-CPU-bruken bare økte med 8 prosent ved bruk av TCP / IP, falt kontekstsvitsjene per sekund med mer enn 150 prosent (noe som selvfølgelig er umulig fordi du da ville ha en negativ kontekstsvitsjer - fallet er enten 33 % eller 60% avhengig av hvilken planet forfatteren var på i skrivende stund) for en 10-bruker arbeidsbelastning. De var ikke imponert over at en grunnleggende funksjonell endring av standardoppførselen til Net-Lib skjedde uten mer enn en forbigående omtale i et ikke-relatert dokument. Windows XP-brukere har også noen ganger opplevd problemer med å koble til SQL Server fordi SQL Server prøver å bruke sertifikater de finner på den lokale datamaskinen, men hvis det er mer enn ett sertifikat tilgjengelig, visste de ikke hvilket som skulle brukes. Når du prøver å bruke Microsoft Analysis Services 2000 RTM, vil det noen ganger vises en feil når du prøver å bla gjennom kuber. Microsoft oppdaget også et problem i installasjonsprogrammet for Windows 95 , Windows 98 og Windows Me som forhindret MDAC-installasjonsprogrammet fra å rulle tilbake når det oppstod en installasjonsfeil.
Flere sikkerhetsproblemer ble løst av Microsoft for MDAC 2.7. David Litchfield fra Next Generation Security Software Ltd rapporterte om et sikkerhetsproblem som skyldes at en av ODBC-funksjonene i MDAC som brukes til å koble til datakilder inneholdt en ukontrollert buffer. Et annet sårbarhet som ble løst, var at en angriper kunne svare på en SQL Server-oppdagelsesmelding som ble sendt av klienter med en spesiallaget pakke som kunne forårsake bufferoverløp. En annen feil ble funnet der koden kunne utføres eksternt når angriperen svarte på sendingen med en annen spesiallaget pakke.
MDAC 2.8
MDAC 2.8 ble utgitt i august 2003 og distribuert med Microsoft Windows Server 2003 , samt på Microsofts nettsted for datatilgangsteknologier . Det introduserte ikke noen nye funksjoner til produktet, men løste en rekke feil og sikkerhetsproblemer - en reg-fil (automatiserer endringer i registeret) ble fjernet som fikk serveren til å kjøre i en "usikker" modus der RDS kunne utnyttes til få uautorisert tilgang til systemet og en ny begrensning ble pålagt lengden på Shape-spørringsstrengen. Det var også flere ODBC-administratorendringer.
23. mai 2005 kunngjorde Brad Rhodes (Lead Program Manager for Microsoft Data Access Technologies) at MDAC 2.8 SP1 var den siste frittstående omfordelingen av MDAC som Microsoft vil sende. MDAC er nå en offisiell komponent i Microsofts operativsystem, selv om de vil gi løpende feil- og sikkerhetskorrigeringer til tidligere utgitte versjoner av den nettdistribuerte versjonen. Imidlertid har Microsoft opprettet en ny komponent kalt SQL Native Client (SQLNCLI), som er et frittstående datatilgangs-API som har kombinert OLE DB- og ODBC-bibliotekene i en DLL. Det ble dannet for å være uavhengig av MDAC, som nå er avhengig av tilstanden operativsystemet er i - en utvikler lenker nå til dette biblioteket og unngår situasjoner der en oppdatering av operativsystemet som oppdaterer MDAC, bryter applikasjoner bygget til en annen versjon av MDAC.
Windows 7 SP1 har ødelagt kompatibilitet for MDAC 2.8. Programvare samlet på Windows 7 SP1 som er avhengig av MDAC ADO, fungerer ikke på Windows-versjoner før Windows 7 SP1 (inkludert Windows 7 RTM, Vista, XP). Microsoft har levert løsninger for å omgå dette problemet for noen applikasjoner, men VBA-applikasjoner forblir berørt. Løsningen for dette problemet ble utgitt i februar 2012.
Windows DAC 6.0
Windows Vista bruker ikke lenger MDAC, men bruker i stedet Windows DAC, som består av oppdaterte versjoner av ADO-, OLE DB- og ODBC-komponenter. Ifølge Microsoft inkluderer "Windows DAC noen endringer i arbeidet med Windows Vista, men tilsvarer nesten helt funksjonelt MDAC 2.8."
Versjonskontroll
Det er to måter å sjekke versjonen av MDAC som er installert på en datamaskin. For Windows 2000, Windows XP og Windows Server 2003 er en måte å sjekke via Microsofts Component Checker- program, som sammenligner verdien av hver installerte MDAC DLL med MDAC-filmanifestet. Den andre måten er å sjekke nøkkelen HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVeri Windows-registeret . Microsoft bemerker at denne informasjonen kan være feil for versjoner av MDAC før 2.1 sammenlignet med versjonene av MDAC-filene som er installert på systemet
| Versjon | Utgivelsesdato | Inkludert med | Funksjoner | Sikkerhetsproblemer |
|---|---|---|---|---|
| 1.0 | August 1996 |
|
|
Ingen bulletiner utgitt |
|
1.5 |
September 1997 - mars 1998 |
|
|
|
| 1.5a | September 1997 – mars 1998 |
Tjenestemelding |
||
| 1,5b | September 1997 – mars 1998 |
|
Tjenestemelding |
|
| 1,5c | September 1997 – mars 1998 |
|
||
| 2.0 | 1. juli 1998 |
|
|
|
| 2.0SP1 | 1. juli 1998 |
|
Y2K-utbedring for Windows NT 4.0 |
|
| 2.0SP2 | 1. juli 1998 |
|
Y2K sanering for alle plattformer |
|
| 2.1 | 11. juli 1998 |
|
|
|
| 2.1 SP1 | 15. mars 1999 |
|
||
| 2.1 SP1a (GA) | 1. april 1999 |
|
||
| 2.1 SP2 | Juli 1999 | |||
| 2.5 | 17. februar 2000 |
|
|
|
| 2.5 SP1 | 31. juli 2000 |
|
||
| 2.5 SP2 | April 2000 |
|
||
| 2,5 SPS3 | Desember 2003 |
|
||
| 2.6 | September 2000 |
|
Ikke inkludert (manuelt installert):
|
|
| 2.6 SP1 | Mai 2001 |
|
||
| 2.6 SP2 | Mai 2002 |
|
||
| 2.7 | Oktober 2001 |
|
|
|
| 2.8 | August 2003 |
|
Løste feil og sikkerhetsproblemer |
|
| 2.8 SP1 | Mai 2005 |
|
Faste feil |
|
| 2.8 SP2 | Mars 2005 |
|
||
| 9.0 | Aldri løslatt |
|
||
| Windows DAC 6.0 (en variant av MDAC for bruk med Vista) | November 2006 |
|
Referanser
Videre lesning
- "ADO API Reference" . MSDN . Microsoft . Hentet 3. mai 2014 .
- "ADO Programmer's Guide" . MSDN . Microsoft . Hentet 3. mai 2014 .
- Delaney, Kalen (2000). Inne i Microsoft SQL Server 2000 (3. utgave). Microsoft Press . ISBN 9780735609983.
- Rothaus, Doug; Mike, Pizzo (desember 2001). "ADO.NET for ADO Programmerer" . MSDN . Microsoft . Hentet 3. mai 2014 .
- Shirolkar, Prash; Henry, Alyssa; Pepitone, Stephen; Bunch, Acey J .; Schwartz, David (januar 2013). "Road Access Technologies Road Map" . MSDN . Microsoft . Hentet 3. mai 2014 .
- Solomon, Christine (1997). Microsoft Office 97 utviklerhåndbok . Microsoft Press . ISBN 9781572316065.