web-dev-qa-db-fra.com

Quelle est la différence entre les sources de données OLE DB et ODBC?

Je lisais un article d’aide MS Excel sur pivotcache et me demandais ce qu’ils entendaient par OLE DB et ODBC sources

... Vous devez utiliser la propriété CommandText au lieu de la propriété SQL, qui existe maintenant principalement pour assurer la compatibilité avec les versions antérieures de Microsoft Excel. Si vous utilisez les deux propriétés, la valeur de la propriété CommandText est prioritaire.

Pour sources OLE DB, la propriété CommandType décrit la valeur de la propriété CommandText.

Pour sources ODBC, la propriété CommandText fonctionne exactement comme la propriété SQL. Si vous définissez cette propriété, les données sont actualisées ...

J'apprécie vraiment vos réponses courtes.

165
Martin08

Selon ADO: ActiveX Data Objects , un livre de Jason T. Roff, publié par O'Reilly Media en 2001 ( excellent diagramme ici), il dit précisément ce que MOZILLA a dit.

(directement de la page 7 de ce livre)

  • ODBC fournit un accès uniquement aux bases de données relationnelles
  • OLE DB fournit les fonctionnalités suivantes
    • Accès aux données quels que soient leur format ou leur emplacement
  • Accès complet aux ODBC sources de données et aux pilotes ODBC

Donc, il semblerait que OLE DB interagisse avec les sources de données basées sur SQL THRU la couche de pilote ODBC.

alt text

Je ne suis pas sûr à 100% que cette image est correcte. Les deux connexions dont je ne suis pas sûr sont de ADO.NET via ADO C-api et OLE DB via ODBC vers une source de données SQL (car dans ce diagramme , l'auteur ne met pas OLE L’accès de la base de données à ODBC, ce qui, à mon avis, est une erreur).

142
bobobobo

ODBC: - Uniquement pour les bases de données relationnelles (Sql Server, Oracle, etc.)

OLE DB: - Pour les bases de données relationnelles et non relationnelles. (Oracle, Sql-Server, Excel, fichiers bruts, etc.)

54
MOZILLA

Voici ma compréhension (ne faisant pas autorité):

ODBC est un standard ouvert indépendant de la technologie pris en charge par la plupart des fournisseurs de logiciels. OLEDB est une API spécifique à la technologie de Microsoft à l'époque COM (COM était une technologie d'interopérabilité et de composants avant .NET)

À un moment donné, divers fournisseurs de données (par exemple, Oracle, etc.), souhaitant être compatibles avec les consommateurs de données Microsoft, ont développé des fournisseurs OLEDB pour leurs produits, mais l’OLEDB reste pour l’essentiel une norme exclusivement Microsoft. Maintenant, la plupart des sources de données Microsoft autorisent les accès ODBC et OLEDB, principalement pour des raisons de compatibilité avec les anciens utilisateurs de données ODBC. De plus, il existe un fournisseur OLEDB (wrapper) pour ODBC qui permet d'utiliser OLEDB pour accéder à des sources de données ODBC si on le souhaite.

En termes de fonctionnalités, OLEDB est bien plus riche que ODBC mais souffre d'un syndrome à un anneau (une règle pour tous les cas) (trop générique, trop compliqué, sans opinion).

En dehors de Microsoft, les fournisseurs de données et les clients ODBC sont largement utilisés et ne vont nulle part.

À l'intérieur de Microsoft Bubble, OLEDB est progressivement supprimé au profit des API .NET natives, construites au-dessus de la couche de transport native pour cette source de données (TDS pour MS SQL Server, par exemple).

41
zvolkov

ODBC et OLE DB sont deux technologies d'accès aux données concurrentes. En ce qui concerne plus particulièrement SQL Server, Microsoft les a toutes deux promues comme leur orientation future préférée, bien qu'à des moments différents.

ODBC

ODBC est une interface standard de l’industrie permettant d’accéder à des données de type table. Il a été principalement développé pour les bases de données et présente des données dans des collections d'enregistrements, chacune d'entre elles étant regroupée dans une collection de champs. Chaque champ possède son propre type de données, adapté au type de données qu’il contient. Chaque fournisseur de base de données (Microsoft, Oracle, Postgres,…) fournit un pilote ODBC pour leur base de données.

Il existe également des pilotes ODBC pour les objets qui, bien qu'ils ne soient pas des tables de base de données, sont suffisamment similaires pour que l'accès aux données de la même manière soit utile. Des exemples sont les feuilles de calcul, les fichiers CSV et les rapports en colonnes.

OLE DB

OLE DB est une technologie Microsoft d'accès aux données. Contrairement à ODBC, il englobe à la fois des données sous forme de tableau et non sous forme de tableau, telles que des messages électroniques, des pages Web, des documents Word et des répertoires de fichiers. Cependant, il est davantage axé sur les procédures que sur les objets et est considéré comme une interface assez difficile pour développer l'accès aux sources de données. Pour surmonter ce problème, ADO a été conçu pour être une couche orientée objet superposée à OLE DB et pour fournir un moyen de travail plus simple et de niveau supérieur, bien que très puissant il. Le grand avantage d’ADO est que vous pouvez l’utiliser pour manipuler des propriétés spécifiques à un type de source de données donné, aussi facilement que vous pouvez l’utiliser pour accéder à ces propriétés qui s’appliquent à tous les types de sources de données. Vous n'êtes pas limité à un plus petit dénominateur commun peu satisfaisant.

Bien que toutes les bases de données aient les pilotes ODBC, elles ne possèdent pas toutes les pilotes OLE DB. Il existe cependant une interface disponible entre OLE et ODBC pouvant être utilisée si vous souhaitez y accéder de la même manière que OLE. Cette interface s'appelle MSDASQL (fournisseur Microsoft OLE DB pour ODBC).

Technologies d'accès aux données SQL Server

SQL Server étant (1) créé par Microsoft et (2) par la plate-forme de base de données Microsoft , ODBC et OLE DB convient parfaitement.

ODBC

Puisque toutes les autres plates-formes de bases de données avaient des interfaces ODBC, Microsoft devait évidemment en fournir une pour SQL Server. En outre, DAO, la technologie par défaut d'origine dans Microsoft Access, utilise ODBC comme moyen standard de communication avec toutes les sources de données externes. Cela fait de l'interface ODBC une condition sine qua non. Le pilote ODBC version 6 pour SQL Server, publié avec SQL Server 2000, existe toujours. Des versions mises à jour ont été publiées pour gérer les nouveaux types de données, technologies de connexion, cryptage, HA/DR, etc. apparus avec les versions suivantes. La version la plus récente est la v13.1 "Pilote ODBC pour SQL Server", publiée le 23/03/2018.

OLE DB

C’est la propre technologie de Microsoft, qu’ils promouvaient fortement entre 2002 et 2005, ainsi que la couche ADO correspondante. Ils espéraient évidemment que cela deviendrait la technologie de choix en matière d'accès aux données. (Ils ont même fait de ADO la méthode par défaut pour accéder aux données dans Access 2002/2003.) Cependant, il est finalement devenu évident que cela ne se produirait pas pour un certain nombre de raisons, telles que:

  1. Le monde n'allait pas se convertir aux technologies Microsoft et s'éloigner d'ODBC;
  2. DAO/ODBC était plus rapide que ADO/OLE DB et était également parfaitement intégré à MS Access, de sorte qu’il n’allait pas mourir de mort naturelle;
  3. Les nouvelles technologies développées par Microsoft, en particulier ADO.NET, pourraient également communiquer directement avec ODBC. ADO.NET pouvait aussi parler directement à OLE DB (laissant ainsi ADO dans un marigot), mais il n'en était pas (contrairement à ADO) entièrement dépendant.

Pour ces raisons et d'autres , Microsoft obsolète OLE DB en tant que technologie d'accès aux données pour les versions de SQL Server postérieures à la v11 (SQL Server 2012). Depuis quelques années auparavant, ils produisaient et mettaient à jour le client SQL Server Native Client, qui prenait en charge les technologies ODBC et OLE DB. Fin 2012, cependant, ils ont annoncé qu'ils s'aligneraient sur ODBC pour un accès natif aux données relationnelles dans SQL Server, et ont encouragé tous les autres utilisateurs à faire de même. Ils ont en outre déclaré que les versions de SQL Server postérieures à v11/SQL Server 2012 ne prendraient pas activement en charge pas OLE DB!

Cette annonce a provoqué une tempête de protestation. Les gens ne comprenaient pas pourquoi MS était en train de déprécier soudainement une technologie pour laquelle ils avaient passé des années à les convaincre de s’engager. En outre, SSAS/SSRS et SSIS, qui étaient des applications écrites par MS et intimement liées à SQL Server, étaient totalement ou partiellement dépendants de OLE DB. Une autre plainte était que OLE DB comportait certaines fonctionnalités souhaitables qu’il semblait impossible de transférer vers ODBC - après tout, OLE DB comportait de nombreux points positifs.

En octobre 2017, Microsoft a cédé et base de données OLE DB . Ils ont annoncé l'arrivée imminente d'un nouveau pilote (MSOLEDBSQL) qui aurait le jeu de fonctionnalités existant de Native Client 11 et introduirait également le basculement multi-sous-réseau et le support TLS 1.2. Le chauffeur a été libéré en mars 2018.

18
marktwo

À un niveau très élémentaire, il s’agit simplement d’API différents pour les différentes sources de données (bases de données, par exemple). OLE DB est plus récent et peut-être meilleur.

Vous pouvez en lire plus sur Wikipédia:

  1. OLE DB
  2. ODBC

C'est à dire. vous pouvez vous connecter à la même base de données à l'aide d'un pilote ODBC ou d'un pilote OLE DB. La différence dans le comportement de la base de données dans ces cas correspond à ce à quoi votre livre fait référence.

6
Ilya Kochetov

Les deux sont des fournisseurs de données (API que votre code utilisera pour communiquer avec une source de données). Oledb qui a été introduit en 1998 devait remplacer ODBC (introduit en 1992)

5
Arcturus

Je ne suis pas sûr de tous les détails, mais je crois comprendre que OLE DB et ODBC sont deux API disponibles pour la connexion à différents types de bases de données sans avoir à gérer tous les problèmes. les détails de mise en œuvre spécifiques de chacun. Selon l'article de Wikipedia sur OLE DB , OLE DB est le successeur de Microsoft pour ODBC et fournit certaines fonctionnalités que vous ne pourrez peut-être pas utiliser avec ODBC tels que l’accès aux feuilles de calcul en tant que sources de base de données.

3
user10340

Sur le site Web de Microsoft, il est indiqué que le fournisseur OLEDB natif s’applique directement au serveur SQL et qu’un autre fournisseur OLEDB appelé fournisseur OLEDB permet à ODBC d’accéder à une autre base de données, telle que Sysbase, DB2, etc. Fournisseur OLEDB. Voir Requêtes distribuées sur MSDN pour plus d'informations.

2
FebWind

• Août 2011: Microsoft désapprouve OLE DB ( Microsoft aligne avec ODBC pour Accès aux données relationnelles natives )

• Octobre 2017: Microsoft ne déprécie pas OLE DB ( Annonce de la nouvelle version de OLE Pilote de base de données pour SQL Server )

2
tibx

ODBC ne fonctionne que pour les bases de données relationnelles. Il ne peut pas fonctionner avec des bases de données non relationnelles telles que les fichiers Ms Excel. Où Olebd peut tout faire.

0
Md Shahriar