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

je lisais un article de MS Excel help sur pivotcache et je me demande ce qu'ils signifient par OLE DB et ODBC sources

...Vous devez utiliser le texte de commande propriété au lieu de la propriété SQL, qui existe maintenant principalement pour compatibilité avec les versions précédentes de Microsoft Excel. Si vous utilisez les deux propriétés, la propriété de CommandText la valeur l'emporte.

pour OLE DB sources , le type de commande propriété décrit la valeur de la Propriété CommandText.

Pour sources ODBC , le CommandText propriété fonctionne exactement comme l' Propriété SQL, et la mise en place de la propriété fait que les données à être actualisé...

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

144
demandé sur Martin08 2008-09-19 19:52:44

11 réponses

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.

(tiré directement de la page 7 de ce livre)

  • ODBC fournit uniquement l'accès aux bases de données relationnelles
  • OLE DB fournit les caractéristiques suivantes
    • accès aux données quel que soit leur format ou leur emplacement
    • 1519160920
    • Plein accès à des sources de données ODBC et les pilotes ODBC

il semblerait donc qu'OLE DB interagisse avec les sources de données basées sur SQL via la couche pilote ODBC.

alt text

Je ne suis pas sûr à 100% que cette image est correcte. les deux connexions Je ne suis pas sûr que ce soit le cas. ADO.NET par Ado C-api, et OLE DB par ODBC à la source de données basée sur SQL (parce que dans ce diagramme l'auteur ne met pas l'accès D'OLE DB par ODBC, qui je crois est une erreur).

127
répondu bobobobo 2017-02-08 14:13:27

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 raw, etc)

52
répondu MOZILLA 2009-04-24 09:47:52

voici ma compréhension (Non-faisant autorité):

ODBC est une technologie-norme ouverte agnostique pris en charge par la plupart des vendeurs de logiciels. OLEDB est un technologie spécifique API de Microsoft de L'ère COM (COM était un composant et la technologie d'interopérabilité avant. net)

à un certain point divers vendeurs de données (par exemple Oracle etc.), désireux d'être compatibles avec les consommateurs de données Microsoft, développé OLEDB fournisseurs pour leurs produits, mais pour la plupart OLEDB reste une norme Microsoft-seulement. Maintenant, la plupart des sources de données Microsoft permettent à la fois L'accès ODBC et OLEDB, principalement pour la compatibilité avec les consommateurs de données ODBC traditionnels. De plus, il existe un fournisseur D'OLEDB (wrapper) pour ODBC qui permet d'utiliser OLEDB pour accéder aux sources de données ODBC si l'on le souhaite.

en termes de caractéristiques OLEDB est considérablement plus riche que ODBC, mais souffre d'un-anneau-à-la-règle-Tous syndrome (trop générique, compliqué, sans opinion).

dans les fournisseurs de données et les clients non-Microsoft world ODBC-basés sont largement utilisés et ne vont nulle part.

à L'intérieur de Microsoft bubble OLEDB est en cours d'élimination progressive en faveur de natif.APISNET construire sur le dessus de quelque soit la couche de transport natif pour cette source de données (par exemple TDS pour MS SQL Server).

38
répondu zvolkov 2013-09-25 14:01:10

à un niveau très élémentaire, ce sont juste des API différentes pour les différentes sources de données (c.-à-d. bases de données). OLE DB est plus récente et sans doute meilleure.

vous pouvez lire plus sur les deux dans Wikipedia:

  1. OLE DB
  2. ODBC

i. e. vous pouvez vous connecter à la même base de données en utilisant un pilote ODBC ou un pilote OLE DB. La différence dans le le comportement de la base de données dans ces cas est ce que votre livre se réfère.

6
répondu Ilya Kochetov 2016-11-04 21:57:16

sont tous les deux des fournisseurs de données (API que votre code va utiliser pour parler à une source de données). L'Oledb, qui a été introduite en 1998, devait remplacer L'ODBC (introduite en 1992)

5
répondu Arcturus 2012-10-23 14:27:59

ODBC et OLE DB sont deux technologies concurrentes d'accès aux données. Spécifiquement en ce qui concerne SQL Server, Microsoft a promu les deux comme leur orientation future préférée - bien qu'à des moments différents.

ODBC

ODBC est une interface standard à l'échelle de l'industrie pour accéder aux 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 de dossiers, dont chacun est regroupé dans une collection de champs. Chaque champ a son propre type de données approprié pour le type de données qu'il contient. Chaque fournisseur de base de données (Microsoft, Oracle, Postgres,...) fournit un pilote ODBC pour sa base de données.

il y a aussi 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. Exemples: les tableurs, les fichiers CSV et les rapports colonnaires.

OLE DB

OLE DB est une technologie Microsoft pour l'accès aux données. Contrairement à ODBC, il englobe à la fois des données de type table et des données non de type table telles que des messages de courrier électronique, des pages web, des documents Word et des répertoires de fichiers. Toutefois, elle est davantage axée sur la procédure que sur l'objet et est considérée comme une interface assez difficile pour développer l'accès aux sources de données. Pour surmonter cela, ADO a été conçu pour être une couche orientée objet sur le dessus de OLE DB et de fournir un niveau plus simple et plus élevé-bien que encore très puissant-façon de travailler avec elle. ADO grand avantage que vous pouvez utiliser pour manipuler des propriétés qui sont spécifiques à un type de source de données, aussi facilement que vous pouvez l'utiliser pour accéder à ces propriétés qui s'appliquent à tous les types de source de données. Vous n'êtes pas limité à certains insatisfaisant plus petit dénominateur commun.

bien que toutes les bases de données aient des pilotes ODBC, elles n'ont pas toutes des pilotes OLE DB. Il y a cependant une interface disponible entre OLE et ODBC qui peut être utilisée si vous voulez y accéder en OLE DB. Cette interface est appelée MSDASQL (Microsoft OLE DB provider for ODBC).

SQL Server Technologies d'Accès aux Données

depuis SQL Server est (1) fait par Microsoft, et (2) la plate-forme de base de données Microsoft, ODBC et OLE DB sont un ajustement naturel pour elle.

ODBC

étant donné que toutes les autres plates-formes de base de données avaient des interfaces ODBC, Microsoft devait évidemment fournir une pour SQL Server. En plus de cela, DAO, la technologie par défaut originale dans Microsoft Access, utilise ODBC comme moyen standard de parler à toutes les sources de données externes. Cela a fait D'une interface ODBC une condition sine qua non. Le pilote ODBC version 6 pour SQL Server, sorti avec SQL Server 2000, est toujours disponible. Des versions mises à jour ont été publiées pour gérer les nouveaux types de données, les technologies de connexion, le cryptage, HA/DR, etc. qui sont apparus avec les versions ultérieures. À partir de 09/07/2018 le plus récent la libération est v13.1 "ODBC Driver for SQL Server", publié le 23/03/2018.

OLE DB

il s'agit de la propre technologie de Microsoft, qu'ils ont fait la promotion fortement à partir d'environ 2002 – 2005, avec son couche ado. Ils espéraient évidemment qu'il deviendrait la technologie d'accès aux données de choix. (Ils ont même fait D'ADO la méthode par défaut pour accéder aux données dans Access 2002/2003. Toutefois, il est finalement devenu évident que cela n'allait pas de se produire pour un certain nombre de raisons, telles que:

  1. le monde n'allait pas passer à Microsoft technologies et loin D'ODBC;
  2. DAO / ODBC était plus rapide que ADO / OLE DB et a également été complètement intégré dans MS Access, donc n'allait pas mourir une mort naturelle;
  3. nouvelles technologies qui étaient en cours de développement par Microsoft, en particulier ADO.NET, pourrait aussi parler directement à ODBC. ADO.NET pourrait parler directement à OLE DB aussi bien (laissant ainsi ADO dans un remous), mais il n'était pas (contrairement ADO) qui en dépend uniquement.

pour ces raisons et d'autres , Microsoft en fait déprécié OLE DB comme une technologie d'accès aux données pour les versions de Serveur SQL après v11 (SQL Server 2012). Depuis quelques années, ils produisaient et mettaient à jour le Client natif SQL Server, qui supportait à la fois ODBC et OLE DB. technologie. Fin 2012 cependant, ils ont annoncé qu'ils s'aligneraient avec ODBC pour l'accès aux données relationnelles natives dans SQL Server, et ont encouragé tous les autres à faire de même. Ils ont en outre déclaré que les versions de SQL Server après v11 / SQL Server 2012 serait activement pas prise en charge OLE DB!

Cette annonce a provoqué une tempête de protestations. Les gens étaient à une perte de comprendre pourquoi MS était soudainement déprécier une technologie qu'ils avaient passé des années de les amener à s'engager. En outre, SSAS / SSRS et SSIS, qui étaient des applications MS-written intimement liées à SQL Server, dépendaient entièrement ou partiellement d'OLE DB. Une autre plainte était que la OLEDB avait certaines caractéristiques souhaitables qu'il semblait impossible de rapporter à ODBC – après tout, la OLEDB avait beaucoup de bons points.

En octobre 2017, Microsoft a cédé et officiellement onu-déconseillé OLE DB . Ils ont annoncé l'arrivée imminente d'un nouveau pilote (MSOLEDBSQL) qui aurait l'ensemble des fonctionnalités existantes du Client natif 11 et introduirait également le basculement multi-sous-réseau et le support TLS 1.2. Le conducteur a été libéré en mars 2018.

4
répondu marktwo 2018-10-04 19:14:29

Je ne suis pas sûr de tous les détails, mais ma compréhension est que OLE DB et ODBC sont deux API qui sont disponibles pour se connecter à divers types de bases de données sans avoir à traiter tous les détails spécifiques de la mise en œuvre de chacun. Selon L'article de Wikipedia sur OLE DB , OLE DB est le successeur de Microsoft à ODBC, et fournit certaines fonctionnalités que vous ne pourriez pas être en mesure de faire avec ODBC tels que l'accès aux tableurs comme sources de base de données.

3
répondu user10340 2008-09-19 16:19:54

sur le site Web de Microsoft, il montre que le fournisseur d'OLEDB natif est appliqué à SQL server directement et un autre fournisseur D'OLEDB appelé Fournisseur D'OLEDB pour ODBC d'accéder à d'autres bases de données, tels que Sysbase, DB2, etc. Il existe différents types de composants sous le fournisseur D'OLEDB. Voir requêtes distribuées sur MSDN pour plus d'informations.

2
répondu FebWind 2016-11-04 22:48:04

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
répondu Md Shahriar 2016-12-19 06:36:06

• août 2011: Microsoft dénonçait OLE DB ( Microsoft est l'Alignement avec ODBC Natif de Données Relationnelles Access )

• octobre 2018: Microsoft undeprecates OLE DB ( Announcing the new release of OLE DB Driver for SQL Server )

0
répondu tibx 2018-05-16 12:42:46

pour savoir pourquoi m$ invente OLEDB, vous ne pouvez pas comparer OLEDB avec ODBC. Vous devriez plutôt comparer OLEDB avec DAO,RDO ou ADO. Ce dernier s'appuie largement sur SQL. Cependant, OLEDB s'appuie sur COM. Mais ODBC est déjà là depuis de nombreuses années, il y a donc des ponts OLEDB-ODBC pour y remédier. Je pense qu'il y a une grande image quand m$ invente OLEDB.

-2
répondu Scott Chu 2016-09-07 04:21:59