Ich habe einen MS Excel-Hilfeartikel über Pivotcache gelesen und mich gefragt, was sie unter OLE DB- und ODBC-Quellen verstehen
... Sie sollten die CommandText-Eigenschaft anstelle der SQL-Eigenschaft verwenden, die jetzt hauptsächlich aus Gründen der Kompatibilität mit früheren Versionen von Microsoft Excel vorhanden ist. Wenn Sie beide Eigenschaften verwenden, hat der Wert der CommandText-Eigenschaft Vorrang.
Für OLE DB-Quellen beschreibt die CommandType-Eigenschaft den Wert der CommandText-Eigenschaft.
Bei ODBC-Quellen funktioniert die CommandText-Eigenschaft genau wie die SQL-Eigenschaft. Durch Festlegen der Eigenschaft werden die Daten aktualisiert ...
Ich freue mich sehr über Ihre kurzen Antworten.
Antworten:
Laut ADO: ActiveX Data Objects , einem Buch von Jason T. Roff, das 2001 von O'Reilly Media veröffentlicht wurde (ausgezeichnetes Diagramm hier), sagt er genau das, was MOZILLA gesagt hat.
(direkt von Seite 7 dieses Buches)
Es scheint also, dass OLE DB über die ODBC-Treiberschicht mit SQL-basierten Datenquellen interagiert.
Ich bin nicht 100% sicher, ob dieses Bild korrekt ist. Die beiden Verbindungen, bei denen ich mir nicht sicher bin, sind ADO.NET über ADO C-api und OLE DB über ODBC zu einer SQL-basierten Datenquelle (da der Autor in diesem Diagramm den Zugriff von OLE DB nicht über ODBC stellt, was ich glaube ist ein Fehler).
quelle
System.Data.SqlClient
das TDS-Protokoll in verwaltetem Code und verwendet nur nativen Code, um die TCP / Named Pipes / etc-Übertragung über das Netzwerk zu verarbeiten. Für Datenbanken, die keinen eigenen verwalteten Anbieter haben, können SieSystem.Data.OleDb
OLE DB oderSystem.Data.Odbc
ODBC umbrechen, dies wird jedoch nicht empfohlen.ODBC: - Nur für relationale Datenbanken (SQL Server, Oracle usw.)
OLE DB: - Für relationale und nicht relationale Datenbanken. (Oracle, SQL-Server, Excel, Rohdateien usw.)
quelle
Open Database Connectivity (ODBC) is Microsoft's strategic interface for accessing data in a heterogeneous environment of relational and non- relational database management systems.
support.microsoft.com/en-us/kb/110093Hier ist mein Verständnis (nicht maßgebend):
ODBC ist ein technologieunabhängiger offener Standard, der von den meisten Softwareanbietern unterstützt wird. OLEDB ist eine technologie-spezifische Microsoft-API aus der COM-Ära (COM war vor .NET eine Komponenten- und Interoperabilitätstechnologie).
Irgendwann entwickelten verschiedene Anbieter von Datenquellen (z. B. Oracle usw.), die bereit waren, mit Microsoft-Datenkonsumenten kompatibel zu sein, OLEDB-Anbieter für ihre Produkte, aber zum größten Teil bleibt OLEDB ein reiner Microsoft-Standard. Jetzt erlauben die meisten Microsoft- Datenquellen sowohl den ODBC- als auch den OLEDB-Zugriff, hauptsächlich aus Gründen der Kompatibilität mit älteren ODBC-Datenkonsumenten. Es gibt auch einen OLEDB-Anbieter (Wrapper) für ODBC, mit dem man mit OLEDB auf ODBC-Datenquellen zugreifen kann, wenn man dies wünscht.
In Bezug auf die Merkmale ist OLEDB wesentlich reicher als ODBC, leidet jedoch an einem One-Ring-to-Rule-All-Syndrom (übermäßig generisch, überkompliziert, nicht meinungsbildend).
In der Welt außerhalb von Microsoft sind ODBC-basierte Datenanbieter und Clients weit verbreitet und gehen nirgendwo hin.
Innerhalb der Microsoft-Blase wird OLEDB zugunsten nativer .NET-APIs auslaufen, die auf der nativen Transportschicht für diese Datenquelle aufbauen (z. B. TDS für MS SQL Server).
quelle
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.
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.
quelle
Auf einer sehr einfachen Ebene sind dies nur verschiedene APIs für die verschiedenen Datenquellen (dh Datenbanken). OLE DB ist neuer und wohl besser.
Sie können mehr über beide in Wikipedia lesen:
Das heißt, Sie können mit einem ODBC-Treiber oder OLE DB-Treiber eine Verbindung zu derselben Datenbank herstellen. Der Unterschied im Datenbankverhalten in diesen Fällen ist das, worauf sich Ihr Buch bezieht.
quelle
Beide sind Datenanbieter (API, mit der Ihr Code mit einer Datenquelle kommuniziert). Oledb, das 1998 eingeführt wurde, sollte ein Ersatz für ODBC sein (eingeführt 1992).
quelle
• August 2011: Microsoft deprecates OLE DB ( Microsoft Ausrichten mit ODBC für Native Relational Data Access )
• Oktober 2017: Microsoft veraltet OLE DB nicht mehr ( Ankündigung der neuen Version des OLE DB- Treibers für SQL Server )
quelle
Ich bin mir nicht aller Details sicher, aber ich verstehe, dass OLE DB und ODBC zwei APIs sind, die für die Verbindung mit verschiedenen Arten von Datenbanken verfügbar sind, ohne dass alle implementierungsspezifischen Details von jedem behandelt werden müssen. Laut dem Wikipedia-Artikel zu OLE DB ist OLE DB der Nachfolger von Microsoft für ODBC und bietet einige Funktionen, die Sie mit ODBC möglicherweise nicht ausführen können, z. B. den Zugriff auf Tabellenkalkulationen als Datenbankquellen.
quelle
Auf der Microsoft-Website wird angezeigt, dass der native OLEDB-Anbieter direkt auf den SQL Server angewendet wird und ein anderer OLEDB-Anbieter namens OLEDB-Anbieter für ODBC auf andere Datenbanken wie Sysbase, DB2 usw. zugreift. Unter OLEDB-Anbieter gibt es verschiedene Arten von Komponenten. Weitere Informationen finden Sie unter Verteilte Abfragen auf MSDN .
quelle
ODBC funktioniert nur für relationale Datenbanken, nicht für nicht relationale Datenbanken wie MS Excel-Dateien. Wo Olebd alles kann.
quelle
Um zu wissen, warum M $ OLEDB erfindet, können Sie OLEDB nicht mit ODBC vergleichen. Stattdessen sollten Sie OLEDB mit DAO, RDO oder ADO vergleichen. Letzteres basiert weitgehend auf SQL. OLEDB setzt jedoch auf COM. Aber ODBC ist schon viele Jahre da, also gibt es eine OLEDB-ODBC-Brücke, um dies zu beheben. Ich denke, es gibt ein großes Bild, wenn M $ OLEDB erfindet.
quelle