ODBC und OLE DB sind zwei konkurrierende Datenzugriffstechnologien. Insbesondere in Bezug auf SQL Server hat Microsoft beide als bevorzugte zukünftige Richtung beworben - allerdings zu unterschiedlichen Zeiten.
ODBC
ODBC ist eine branchenweite Standardschnittstelle für den Zugriff auf tabellenähnliche Daten. Es wurde hauptsächlich für Datenbanken entwickelt und präsentiert Daten in Datensammlungen, von denen jede in einer Sammlung von Feldern zusammengefasst ist. Jedes Feld hat einen eigenen Datentyp, der dem darin enthaltenen Datentyp entspricht. Jeder Datenbankanbieter (Microsoft, Oracle, Postgres,…) stellt einen ODBC-Treiber für seine Datenbank bereit.
Es gibt auch ODBC-Treiber für Objekte, die zwar keine Datenbanktabellen sind, jedoch so ähnlich sind, dass der Zugriff auf Daten auf dieselbe Weise nützlich ist. Beispiele sind Tabellenkalkulationen, CSV-Dateien und Spaltenberichte.
OLE DB
OLE DB ist eine Microsoft-Technologie für den Zugriff auf Daten. Im Gegensatz zu ODBC umfasst es sowohl tabellenähnliche als auch nicht tabellenähnliche Daten wie E-Mail-Nachrichten, Webseiten, Word-Dokumente und Dateiverzeichnisse. Es ist jedoch eher prozedurorientiert als objektorientiert und wird als ziemlich schwierige Schnittstelle für die Entwicklung des Zugriffs auf Datenquellen angesehen. Um dies zu überwinden, wurde ADO als objektorientierte Schicht über OLE DB konzipiert und bietet eine einfachere und übergeordnete, wenn auch immer noch sehr leistungsfähige Möglichkeit, damit zu arbeiten. Der große Vorteil von ADO besteht darin, dass Sie damit Eigenschaften bearbeiten können, die für einen bestimmten Datenquellentyp spezifisch sind, genauso einfach wie Sie damit auf die Eigenschaften zugreifen können, die für alle Datenquellentypen gelten. Sie sind nicht auf einen unbefriedigenden kleinsten gemeinsamen Nenner beschränkt.
Während alle Datenbanken ODBC-Treiber haben, haben sie nicht alle OLE DB-Treiber. Es ist jedoch eine Schnittstelle zwischen OLE und ODBC verfügbar, die verwendet werden kann, wenn Sie auf OLE DB-ähnliche Weise darauf zugreifen möchten. Diese Schnittstelle heißt MSDASQL (Microsoft OLE DB-Anbieter für ODBC).
SQL Server-Datenzugriffstechnologien
Da SQL Server (1) von Microsoft und (2) von der Microsoft-Datenbankplattform hergestellt wird, sind sowohl ODBC als auch OLE DB eine natürliche Ergänzung dafür.
ODBC
Da alle anderen Datenbankplattformen ODBC-Schnittstellen hatten, musste Microsoft offensichtlich eine für SQL Server bereitstellen. Darüber hinaus verwendet DAO, die ursprüngliche Standardtechnologie in Microsoft Access, ODBC als Standardmethode für die Kommunikation mit allen externen Datenquellen. Dies machte eine ODBC-Schnittstelle zu einer unabdingbaren Voraussetzung. Der mit SQL Server 2000 veröffentlichte ODBC-Treiber der Version 6 für SQL Server ist noch verfügbar. Es wurden aktualisierte Versionen veröffentlicht, um die neuen Datentypen, Verbindungstechnologien, Verschlüsselung, HA / DR usw. zu verarbeiten, die in nachfolgenden Versionen erschienen sind. Ab dem 09.07.2008 ist die neueste Version v13.1 „ODBC-Treiber für SQL Server“, veröffentlicht am 23.03.2008.
OLE DB
Dies ist Microsofts eigene Technologie, die von etwa 2002 bis 2005 stark gefördert wurde, zusammen mit der dazugehörigen ADO-Schicht. Sie hofften offenbar, dass dies die Datenzugriffstechnologie der Wahl werden würde. (Sie haben ADO sogar zur Standardmethode für den Zugriff auf Daten in Access 2002/2003 gemacht.) Schließlich stellte sich jedoch heraus, dass dies aus einer Reihe von Gründen nicht geschehen würde, z.
- Die Welt würde nicht auf Microsoft-Technologien umsteigen und sich von ODBC entfernen.
- DAO / ODBC war schneller als ADO / OLE DB und wurde auch gründlich in MS Access integriert, sodass kein natürlicher Tod eintreten würde.
- Neue Technologien, die von Microsoft entwickelt wurden, insbesondere ADO.NET, konnten auch direkt mit ODBC kommunizieren. ADO.NET konnte auch direkt mit OLE DB kommunizieren (wodurch ADO im Hintergrund blieb), war jedoch (im Gegensatz zu ADO) nicht ausschließlich davon abhängig.
Aus diesen und anderen Gründen hat Microsoft OLE DB als Datenzugriffstechnologie für SQL Server-Versionen nach Version 11 (SQL Server 2012) tatsächlich abgelehnt . Vor diesem Zeitpunkt hatten sie einige Jahre lang den nativen SQL Server-Client erstellt und aktualisiert, der sowohl ODBC- als auch OLE DB-Technologien unterstützte. Ende 2012 kündigten sie jedoch an, dass sie sich für den nativen relationalen Datenzugriff in SQL Server an ODBC ausrichten würden, und ermutigten alle anderen, dasselbe zu tun. Sie gaben weiter an, dass SQL Server-Versionen nach v11 / SQL Server 2012 OLE DB nicht aktiv unterstützen würden !
Diese Ankündigung löste einen Sturm des Protests aus. Die Menschen waren nicht in der Lage zu verstehen, warum MS plötzlich eine Technologie ablehnte, für die sie sich jahrelang verpflichtet hatten. Darüber hinaus waren SSAS / SSRS und SSIS, bei denen es sich um MS-geschriebene Anwendungen handelte, die eng mit SQL Server verbunden waren, ganz oder teilweise von OLE DB abhängig. Eine weitere Beschwerde war, dass OLE DB bestimmte wünschenswerte Funktionen hatte, die unmöglich auf ODBC zurückportiert werden konnten - schließlich hatte OLE DB viele gute Punkte.
Im Oktober 2017 gab Microsoft die OLE DB nach und lehnte sie offiziell ab . Sie kündigten die bevorstehende Einführung eines neuen Treibers (MSOLEDBSQL) an, der über die vorhandenen Funktionen des Native Client 11 verfügt und außerdem ein Multi-Subnetz-Failover und TLS 1.2-Unterstützung einführt. Der Fahrer wurde im März 2018 freigelassen.