ODBC et OLE DB sont deux technologies d'accès aux données concurrentes. En ce qui concerne spécifiquement SQL Server, Microsoft les a promus tous les deux comme leur orientation future préférée - mais à 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 les données dans des collections d'enregistrements, dont chacun est regroupé dans une collection de champs. Chaque champ a son propre type de données adapté au type de données qu'il contient. Chaque éditeur de base de données (Microsoft, Oracle, Postgres,…) fournit un pilote ODBC pour sa 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 pour l'accès aux données. Contrairement à ODBC, il englobe à la fois des données de type table et non-table telles que les messages électroniques, les pages Web, les documents Word et les répertoires de fichiers. Cependant, il est orienté procédure plutôt qu'objet et est considéré comme une interface assez difficile avec laquelle 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 au-dessus d'OLE DB et pour fournir une manière plus simple et de plus haut niveau - bien que toujours très puissante - de l'utiliser. Le grand avantage d'ADO est que vous pouvez l'utiliser pour manipuler des propriétés spécifiques à un type donné de source de données, tout aussi facilement que vous pouvez l'utiliser pour accéder aux propriétés qui s'appliquent à tous les types de source de données. Vous n'êtes pas limité à un plus petit dénominateur commun insatisfaisant.
Bien que toutes les bases de données aient des pilotes ODBC, elles ne disposent pas toutes de pilotes OLE DB. Il existe cependant une interface disponible entre OLE et ODBC qui peut être utilisée si vous souhaitez y accéder à la manière OLE DB. Cette interface est appelée MSDASQL (fournisseur Microsoft OLE DB pour ODBC).
Technologies d'accès aux données SQL Server
Étant donné que SQL Server est (1) créé par Microsoft et (2) la plate-forme de base de données Microsoft, ODBC et OLE DB lui conviennent naturellement.
ODBC
Étant donné que toutes les autres plates-formes de bases de données avaient des interfaces ODBC, Microsoft devait évidemment en fournir une pour SQL Server. De plus, DAO, la technologie par défaut d'origine dans Microsoft Access, utilise ODBC comme moyen standard de communiquer avec toutes les sources de données externes. Cela faisait d'une interface ODBC une condition sine qua non. Le pilote ODBC version 6 pour SQL Server, publié avec SQL Server 2000, est toujours disponible. Des versions mises à jour ont été publiées pour gérer les nouveaux types de données, technologies de connexion, chiffrement, HA / DR, etc. qui sont apparus avec les versions ultérieures. Depuis le 09/07/2018, la version la plus récente est la v13.1 «Pilote ODBC pour SQL Server», publiée le 23/03/2018.
OLE DB
Il s'agit de la propre technologie de Microsoft, dont ils faisaient la promotion entre 2002 et 2005, avec sa couche ADO associée. Ils espéraient manifestement que cela 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.) Cependant, il est finalement devenu évident que cela n'allait pas se produire pour un certain nombre de raisons, telles que:
- Le monde n'allait pas se convertir aux technologies Microsoft et s'éloigner d'ODBC;
- DAO / ODBC était plus rapide que ADO / OLE DB et était également complètement intégré dans MS Access, donc n'allait pas mourir d'une mort naturelle;
- Les nouvelles technologies développées par Microsoft, en particulier ADO.NET, pourraient également communiquer directement avec ODBC. ADO.NET pouvait également parler directement à OLE DB (laissant ainsi ADO dans un remous), mais il n'en dépendait pas (contrairement à ADO) uniquement.
Pour ces raisons et d'autres , Microsoft a en fait déconseillé OLE DB en tant que technologie d'accès aux données pour les versions de SQL Server après la version 11 (SQL Server 2012). Pendant quelques années auparavant, ils produisaient et mettaient à jour SQL Server Native Client, qui prenait en charge les technologies ODBC et OLE DB. À la fin de 2012 cependant, ils ont annoncé qu'ils s'alignaient sur ODBC pour l'accès natif aux données relationnelles dans SQL Server, et ont encouragé tout le monde à faire de même. Ils ont en outre déclaré que les versions de SQL Server après la v11 / SQL Server 2012 ne prendraient pas activement en charge OLE DB!
Cette annonce a provoqué une tempête de protestations. Les gens ne comprenaient pas pourquoi la SP abandonnait soudainement une technologie à laquelle ils avaient passé des années à s'engager. En outre, SSAS / SSRS et SSIS, qui étaient des applications écrites par MS intimement liées à SQL Server, dépendaient totalement ou partiellement d'OLE DB. Encore une autre plainte était que OLE DB avait certaines fonctionnalités souhaitables qu'il semblait impossible de porter vers ODBC - après tout, OLE DB avait de nombreux points positifs.
En octobre 2017, Microsoft a cédé et officiellement abandonné 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.