wat is het verschil tussen OLE DB- en ODBC-gegevensbronnen?

Ik las een MS Excel-helpartikel over pivotcache en vroeg me af wat ze bedoelen met OLE DB- en ODBC-bronnen

…U moet de CommandText . gebruiken
eigenschap in plaats van de eigenschap SQL,
die nu voornamelijk bestaat voor
compatibiliteit met eerdere versies van
Microsoft Excel. Als je beide gebruikt
eigenschappen, de eigenschap CommandText
waarde heeft voorrang.

Voor OLE DB-bronnen, het CommandType
eigenschap beschrijft de waarde van de
CommandText-eigenschap.

Voor ODBC-bronnen, de CommandText
eigenschap werkt precies zoals de
SQL-eigenschap en de eigenschap instellen
zorgt ervoor dat de gegevens worden vernieuwd…

Ik stel uw korte antwoorden zeer op prijs.


Antwoord 1, autoriteit 100%

Volgens ADO: ActiveX Data Objects, een boek van Jason T. Roff, gepubliceerd door O’Reilly Media in 2001(uitstekend diagram hier), hij zegt precies wat MOZILLA zei.

(direct vanaf pagina 7 van dat boek)

  • ODBC biedt alleen toegang tot relationele databases
  • OLE DB biedt de volgende functies:
    • Toegang tot gegevens ongeacht het formaat of de locatie
    • Volledige toegang tot ODBC-gegevensbronnen en ODBC-stuurprogramma’s

Het lijkt er dus op dat OLE DB samenwerkt met op SQL gebaseerde gegevensbronnen DOOR de ODBC-stuurprogrammalaag.

alt-tekst

Ik weet niet 100% zeker of deze afbeelding correct is.De twee verbindingen waar ik niet zeker van ben, zijn ADO.NET via ADO C-api en OLE DB via ODBC naar SQL-gebaseerd gegevensbron (omdat in dit diagramde auteur plaatst de toegang van OLE DB niet via ODBC, wat volgens mij een vergissing is).


Antwoord 2, autoriteit 37%

ODBC:- Alleen voor relationele databases (Sql Server, Oracle enz.)

OLE DB:- Voor zowel relationele als niet-relationele databases. (Oracle, Sql-Server, Excel, onbewerkte bestanden, enz.)


Antwoord 3, autoriteit 28%

Hier is mijn begrip (niet-gezaghebbend):

ODBC is een technologie-agnostische open standaard die door de meeste softwareleveranciers wordt ondersteund.
OLEDB is een technologiespecifiekeAPI van Microsoft uit het COM-tijdperk (COM was een component en interoperabiliteitstechnologie vóór .NET)

Op een gegeven moment hebben verschillende leveranciers van databronnen (bijv. Oracle enz.), die compatibel willen zijn met Microsoft-dataconsumenten, OLEDB-providers voor hun producten ontwikkeld, maar voor het grootste deel blijft OLEDB een Microsoft-only-standaard. Nu staan de meeste Microsoft-gegevensbronnen zowel ODBC- als OLEDB-toegang toe, voornamelijk voor compatibiliteit met oudere ODBC-gegevensgebruikers. Er bestaat ook een OLEDB-provider (wrapper) voor ODBC waarmee men OLEDB kan gebruiken om toegang te krijgen tot ODBC-gegevensbronnen als men dat wenst.

In termen van de kenmerken is OLEDB aanzienlijk rijker dan ODBC, maar lijdt aan het one-ring-to-rule-them-all-syndroom (overdreven generiek, te gecompliceerd, niet-ingenomen).

In niet-Microsoft-wereld worden op ODBC gebaseerde gegevensproviders en clients veel gebruikt en gaan ze nergens heen.

Binnen Microsoft-bubbel wordt OLEDB uitgefaseerd ten gunste van native .NET API’s die bovenop de native transportlaag voor die gegevensbron worden gebouwd (bijv. TDS voor MS SQL Server).


Antwoord 4, autoriteit 16%

ODBC en OLE DB zijn twee concurrerende technologieën voor gegevenstoegang. Specifiek met betrekking tot SQL Server heeft Microsoft ze allebei gepromoot als hun voorkeursrichting voor de toekomst – zij het op verschillende tijdstippen.

ODBC

ODBC is een industriebrede standaardinterface voor toegang tot tabelachtige gegevens. Het is voornamelijk ontwikkeld voor databases en presenteert gegevens in verzamelingen records, die elk zijn gegroepeerd in een verzameling velden. Elk veld heeft zijn eigen gegevenstype dat geschikt is voor het type gegevens dat het bevat.
Elke databaseleverancier (Microsoft, Oracle, Postgres, …) levert een ODBC-stuurprogramma voor hun database.

Er zijn ook ODBC-stuurprogramma’s voor objecten die, hoewel het geen databasetabellen zijn, voldoende op elkaar lijken dat het nuttig is om op dezelfde manier toegang te krijgen tot gegevens. Voorbeelden zijn spreadsheets, CSV-bestanden en kolomrapporten.

OLE DB

OLE DB is een Microsoft-technologie voor toegang tot gegevens. In tegenstelling tot ODBC omvat het zowel tabelachtige als niet-tabelachtige gegevens, zoals e-mailberichten, webpagina’s, Word-documenten en bestandsmappen. Het is echter proceduregericht in plaats van objectgericht en wordt beschouwd als een nogal moeilijke interface om toegang tot gegevensbronnen te ontwikkelen. Om dit te verhelpen, is ADO ontworpen als een objectgeoriënteerde laag bovenop OLE DB en om een eenvoudigere en hogere – maar nog steeds zeer krachtige – manier om ermee te werken te bieden. Het grote voordeel van ADO is dat je het kunt gebruiken om eigenschappen te manipuleren die specifiek zijn voor een bepaald type gegevensbron, net zo gemakkelijk als je het kunt gebruiken om toegang te krijgen tot die eigenschappen die van toepassing zijn op alle gegevensbrontypen. U bent niet beperkt tot een onbevredigende kleinste gemene deler.

Hoewel alle databases ODBC-stuurprogramma’s hebben, hebben ze niet allemaal OLE DB-stuurprogramma’s. Er is echter een interface beschikbaar tussen OLE en ODBC die kan worden gebruikt als u ze op OLE DB-achtige wijze wilt benaderen. Deze interface heet MSDASQL (Microsoft OLE DB provider voor ODBC).

SQL Server-gegevenstoegangstechnologieën

Omdat SQL Server (1) is gemaakt door Microsoft en (2) hetdatabaseplatform van Microsoft, zijn zowel ODBC als OLE DB er een natuurlijke oplossing voor.

ODBC

Aangezien alle andere databaseplatforms ODBC-interfaces hadden, moest Microsoft er uiteraard een voor SQL Server leveren. Daarnaast gebruikt DAO, de oorspronkelijke standaardtechnologie in Microsoft Access, ODBC als de standaardmanier om met alle externe gegevensbronnen te praten. Dit maakte een ODBC-interface een sine qua non.
Het versie 6 ODBC-stuurprogramma voor SQL Server, uitgebracht met SQL Server 2000, is er nog steeds. Er zijn bijgewerkte versies uitgebracht om de nieuwe datatypes, verbindingstechnologieën, encryptie, HA/DR enz. te verwerken die bij volgende releases zijn verschenen. Vanaf 09/07/2018 is de meest recente release v13.1 “ODBC Driver for SQL Server”, uitgebracht op 23/03/2018.

OLE DB

Dit is de eigen technologie van Microsoft, die ze tussen 2002 en 2005 sterk promootten, samen met de bijbehorende ADO-laag. Ze hoopten blijkbaar dat dit de favoriete technologie voor gegevenstoegang zou worden. (Ze maakten zelfs van ADO de standaardmethode voor toegang tot gegevens in Access 2002/2003.) Uiteindelijk werd het echter duidelijk dat dit om een aantal redenen niet zou gebeuren, zoals:

  1. De wereld zou niet overgaan op Microsoft-technologieën en
    weg van ODBC;
  2. DAO/ODBC was sneller dan ADO/OLE DB en was ook grondig geïntegreerd in MS Access, dus zou geen natuurlijke dood sterven;
  3. Nieuwe technologieën die door Microsoft werden ontwikkeld, met name ADO.NET,
    kan ook rechtstreeks met ODBC praten. ADO.NET kan rechtstreeks met OLE praten
    DB ook (waardoor ADO in een opstuwing bleef), maar het was niet (in tegenstelling tot
    ADO) er alleen van afhankelijk.

Om deze redenen en anderen, Microsoft eigenlijk verouderde OLE DB als technologie voor gegevenstoegangvoor SQL Server-releases na v11 (SQL Server 2012). Een paar jaar daarvoor hadden ze de SQL Server Native Client geproduceerd en bijgewerkt, die zowel ODBC- als OLE DB-technologieën ondersteunde. Eind 2012 kondigden ze echter aan dat ze zouden gaan samenwerken met ODBC voor native relationele gegevenstoegang in SQL Server, en moedigden ze iedereen aan hetzelfde te doen. Ze verklaarden verder dat SQL Server-releases na v11/SQL Server 2012 actief geenondersteuning zouden bieden voor OLE DB!

Deze aankondiging veroorzaakte een storm van protest. Mensen konden niet begrijpen waarom MS plotseling een technologie afkeurde waaraan ze zich jarenlang hadden toegewijd. Bovendien waren SSAS/SSRS en SSIS, door MS geschreven applicaties die nauw verbonden waren met SQL Server, geheel of gedeeltelijk afhankelijk van OLE DB. Nog een andere klacht was dat OLE DB bepaalde wenselijke functies had die onmogelijk naar ODBC konden worden teruggestuurd – OLE DB had tenslotte veel goede punten.

In oktober 2017 gaf Microsoft toe en officieel niet-verouderde OLE DB. Ze kondigden de aanstaande komst aan van een nieuwe driver (MSOLEDBSQL) die de bestaande functieset van Native Client 11 zou hebben en ook multi-subnet failover en TLS 1.2-ondersteuning zou introduceren. De bestuurder is in maart 2018 vrijgelaten.


Antwoord 5, autoriteit 4%

Op een heel basaal niveau zijn dit gewoon verschillende API’s voor de verschillende gegevensbronnen (d.w.z. databases). OLE DB is nieuwer en aantoonbaar beter.

Je kunt over beide meer lezen op Wikipedia:

  1. OLE DB
  2. ODBC

D.w.z. u kunt verbinding maken met dezelfde database met behulp van een ODBC-stuurprogramma of OLE DB-stuurprogramma. Het verschil in het databasegedrag in die gevallen is waar uw boek naar verwijst.


Antwoord 6, autoriteit 4%

• Augustus 2011: Microsoft beëindigtOLE DB (Microsoft stemt af met ODBC voor native relationele gegevenstoegang)

• Oktober 2017: Microsoft verklaart nietOLE DB (Aankondiging van de nieuwe release van OLE DB Driver voor SQL Server)


Antwoord 7, autoriteit 3%

Beide zijn gegevensproviders (API die uw code zal gebruiken om met een gegevensbron te praten). Oledb, dat in 1998 werd geïntroduceerd, was bedoeld als vervanging voor ODBC (geïntroduceerd in 1992)


Antwoord 8, autoriteit 2%

Ik ben niet zeker van alle details, maar ik heb begrepen dat OLE DB en ODBC twee API’s zijn die beschikbaar zijn om verbinding te maken met verschillende soorten databases zonder dat ze alle implementatiespecifieke details van elk moeten behandelen. Volgens het Wikipedia-artikel over OLE DB, OLE DB is de opvolger van Microsoft van ODBC en biedt een aantal functies die u mogelijk niet met ODBC kunt doen, zoals toegang tot spreadsheets als databasebronnen.


Antwoord 9

Op de Microsoft-website laat het zien dat de native OLEDB-provider rechtstreeks op de SQL-server wordt toegepast en dat een andere OLEDB-provider, de OLEDB-provider voor ODBC, toegang krijgt tot andere databases, zoals Sysbase, DB2 enz. Er zijn verschillende soorten componenten onder de OLEDB-provider. Zie Gedistribueerde zoekopdrachten op MSDNvoor meer informatie .


Antwoord 10

ODBC werkt alleen voor relationele databases, het kan niet werken met niet-relationele databases zoals MS Excel-bestanden. Waar Olebd alles kan.


Antwoord 11

Om te weten waarom M$ OLEDB uitvindt, kun je OLEDB niet vergelijken met ODBC. In plaats daarvan moet u OLEDB vergelijken met DAO, RDO of ADO. Dit laatste is grotendeels afhankelijk van SQL. OLEDB vertrouwt echter op COM. Maar ODBC is er al vele jaren, dus er is een OLEDB-ODBC-brug om dit te verhelpen. Ik denk dat er een groot beeld is wanneer M$ OLEDB uitvindt.

Other episodes