Section courante

A propos

Section administrative du site

Introduction

La technologie ODBC, dont le nom provient de l'anglicisme Open Database Connectivity, est un standard d'interface de programmation d'application (API) conçu par Microsoft afin de fournir un mécanisme universel d'accès aux systèmes de gestion de bases de données (DBMS - Database Management Systems). Son objectif principal est de permettre aux applications d'accéder à différentes bases de données en utilisant une interface commune, indépendamment du moteur de base de données employé. Ainsi, un même programme peut communiquer avec Microsoft Access (Microsoft Access Driver (*.mdb, *.accdb)), dBASE, Microsoft SQL Server (ODBC Driver for SQL Server), Oracle (en utilisant Oracle ODBC Driver), MySQL (en utilisant MySQL Connector/ODBC (anciennement MyODBC)), PostgreSQL (en utilisant psqlODBC (PostgreSQL ODBC Driver)), IBM Db2 (en utilisant IBM Data Server Driver for ODBC and CLI (anciennement IBM DB2 CLI Driver)), SQLite (en utilisant SQLite ODBC Driver ou SQLite3 ODBC Driver) et bien d'autres systèmes simplement en changeant le pilote ODBC utilisé, sans devoir modifier le code source de l'application.

Dans les faits, cette technologie vise à offrir aux programmeurs et aux utilisateurs une méthode universelle de connexion aux bases de données sous le système d'exploitation Windows, tout en étant progressivement adaptée à d'autres plateformes telles que Linux et macOS grâce à des implémentations compatibles comme unixODBC et iODBC. ODBC repose sur une architecture composée d'un gestionnaire de pilotes (Driver Manager), d'un pilote spécifique à chaque système de gestion de bases de données et de l'application cliente. Cette séparation facilite le développement d'applications portables, simplifie la maintenance des logiciels et permet aux entreprises de changer de serveur de bases de données sans devoir réécrire entièrement leurs applications. Encore aujourd'hui, malgré l'apparition de technologies plus récentes comme OLE DB, ADO.NET ou JDBC, ODBC demeure l'un des standards les plus répandus pour assurer la communication entre les applications professionnelles et les bases de données relationnelles.

Architecture ODBC

L'architecture ODBC (Open Database Connectivity) constitue un cadre logiciel normalisé permettant aux applications d'accéder à une grande variété de systèmes de gestion de bases de données (SGBD) sans devoir être développées spécifiquement pour chacun d'eux. Introduite par Microsoft et largement adoptée par l'industrie, cette architecture définit une interface de programmation commune (API - Application Programming Interface) qui masque les différences entre les différents moteurs de bases de données. Grâce à cette approche, une même application peut communiquer aussi bien avec Microsoft SQL Server, Oracle Database, MySQL, PostgreSQL, IBM Db2, SQLite, Microsoft Access ou tout autre SGBD compatible ODBC, simplement en utilisant le pilote approprié. Cette indépendance vis-à-vis de la base de données simplifie considérablement le développement, la maintenance et l'évolution des applications.

L'un des principaux objectifs de l'architecture ODBC est d'offrir une couche d'abstraction entre les applications et les bases de données. Au lieu que chaque logiciel doive intégrer une bibliothèque spécifique à chaque fournisseur de bases de données, toutes les communications transitent par une interface standardisée. L'application envoie ses requêtes SQL au moyen des fonctions de l'API ODBC, tandis que le pilote correspondant se charge de les convertir dans le protocole et le format compris par la base de données concernée. Cette architecture permet ainsi de remplacer un SGBD par un autre avec un minimum de modifications au niveau du code de l'application, ce qui représente un avantage considérable dans les environnements professionnels où les besoins évoluent fréquemment.

L'architecture ODBC repose principalement sur trois composants essentiels : l'application (Application), le Gestionnaire de pilotes ODBC (ODBC Driver Manager) et le pilote ODBC (ODBC Driver). L'application représente le logiciel qui souhaite accéder aux données. Il peut s'agir d'un programme développé en C++, C#, Java, Python, Delphi, Visual Basic ou dans tout autre langage prenant en charge ODBC. L'application utilise exclusivement les fonctions normalisées de l'API ODBC et n'a généralement pas besoin de connaître les particularités techniques de la base de données avec laquelle elle communique.

Le Gestionnaire de pilotes ODBC (ODBC Driver Manager) constitue le cour de l'architecture. Son rôle est de recevoir les appels provenant de l'application, de gérer les connexions, de rechercher le pilote approprié et de transmettre les requêtes vers celui-ci. Il joue le rôle d'intermédiaire entre l'application et les différents pilotes installés sur l'ordinateur. Le gestionnaire prend également en charge certaines fonctions communes, telles que la gestion des sources de données (DSN), le chargement dynamique des pilotes, la validation des paramètres de connexion et l'administration des environnements ODBC. Sous Windows, cette fonction est généralement assurée par les bibliothèques système fournies avec le système d'exploitation.

Le pilote ODBC (ODBC Driver) est quant à lui spécifique à chaque système de gestion de bases de données. Son rôle consiste à traduire les appels de l'API ODBC en commandes compréhensibles par le serveur de bases de données ciblé. Il convertit les requêtes SQL, les paramètres, les types de données ainsi que les résultats retournés par le serveur afin que l'application puisse les manipuler dans un format standardisé. Chaque fournisseur de base de données développe généralement son propre pilote ODBC afin de tirer pleinement parti des fonctionnalités de son moteur tout en restant compatible avec la norme ODBC.

Le fonctionnement général de l'architecture est relativement simple. Lorsqu'une application souhaite exécuter une requête SQL, elle appelle une fonction de l'API ODBC. Cette requête est reçue par le Gestionnaire de pilotes, qui identifie le pilote correspondant à la source de données demandée. Le pilote établit ensuite la connexion avec la base de données, transmet la requête SQL, récupère les résultats puis les renvoie au Gestionnaire de pilotes. Celui-ci retourne finalement les données à l'application sous une forme normalisée. Tout ce processus est transparent pour le développeur, qui peut ainsi utiliser les mêmes fonctions ODBC quelle que soit la base de données réellement utilisée.

Cette architecture présente de nombreux avantages. Elle favorise la portabilité des applications, réduit les coûts de développement, facilite les migrations entre différents systèmes de gestion de bases de données et permet de réutiliser le même code avec plusieurs fournisseurs de bases de données. Elle simplifie également la maintenance, puisqu'un changement de base de données nécessite souvent uniquement l'installation d'un nouveau pilote ODBC ou la modification de la source de données, sans qu'il soit nécessaire de réécrire l'ensemble de l'application. Pour ces raisons, ODBC demeure aujourd'hui une technologie largement utilisée dans les logiciels professionnels, les outils décisionnels, les environnements de développement et de nombreuses applications d'entreprise.

L'architecture de la connectivité des données basée sur ODBC peut donc être représentée comme une succession de couches où chaque composant possède une responsabilité bien définie : l'application envoie les requêtes SQL, le Gestionnaire de pilotes sélectionne le pilote approprié, le pilote traduit les commandes dans le langage du SGBD concerné, puis la base de données traite les requêtes avant de renvoyer les résultats selon le chemin inverse. Cette organisation modulaire est l'une des principales raisons du succès d'ODBC depuis plusieurs décennies et explique pourquoi cette technologie demeure une référence en matière d'accès universel aux bases de données.

Sources de données machine

Les sources de données machine permettent d'entreposer les informations de connexion nécessaires à l'accès à une source de données directement dans le Registre Windows d'un ordinateur donné. Contrairement à d'autres types de sources de données pouvant être partagées ou déplacées, une source de données machine est associée à un ordinateur spécifique et ne peut être utilisée que sur celui-ci. Cette approche garantit que les paramètres de connexion demeurent liés à l'environnement local, ce qui simplifie la gestion des configurations et réduit les risques d'erreur lors de l'utilisation d'applications reposant sur ODBC.

Il existe deux grandes catégories de sources de données d'ordinateur : les sources de données utilisateur et les sources de données système. Les sources de données utilisateur sont créées pour un seul compte Windows et ne peuvent être utilisées que par l'utilisateur actuellement connecté. Elles sont invisibles pour les autres comptes présents sur la même machine, ce qui permet à chaque utilisateur de disposer de ses propres paramètres de connexion sans interférer avec ceux des autres. Ce type de source est particulièrement adapté aux postes de travail personnels ou aux environnements où chaque utilisateur possède des besoins différents en matière d'accès aux bases de données.

À l'inverse, les sources de données système sont accessibles à tous les utilisateurs d'un même ordinateur, peu importe le compte avec lequel ils ouvrent une session. Elles sont également disponibles pour les services Windows fonctionnant en arrière-plan, ce qui les rend particulièrement utiles pour les applications serveur, les tâches planifiées ou les services qui doivent accéder automatiquement à une base de données. Comme ces paramètres sont communs à l'ensemble de la machine, ils facilitent l'administration des applications partagées et évitent de devoir recréer une configuration distincte pour chaque utilisateur.

Une source de données machine constitue également un choix intéressant lorsqu'il est souhaitable de renforcer la sécurité de l'environnement. Étant enregistrée localement dans le Registre Windows, elle ne peut être utilisée que sur l'ordinateur où elle a été créée. Seuls les utilisateurs autorisés à ouvrir une session sur cette machine peuvent visualiser ou exploiter cette configuration, tandis qu'un utilisateur à distance ne peut pas simplement copier cette source de données vers un autre ordinateur afin de bénéficier des mêmes paramètres de connexion. Cette limitation contribue à protéger les informations de configuration et réduit les risques de duplication non autorisée, tout en facilitant le contrôle des accès dans un environnement professionnel.

Sources de données fichier

Les sources de données fichier, également appelées fichiers DSN (Data Source Name), enregistrent les informations de connexion dans un simple fichier texte plutôt que dans le Registre Windows. Cette approche offre une plus grande souplesse d'utilisation que les sources de données machine, car les paramètres de connexion sont indépendants de l'ordinateur sur lequel ils ont été créés. Le fichier DSN peut ainsi être facilement déplacé, sauvegardé ou distribué selon les besoins, sans qu'il soit nécessaire de recréer manuellement la configuration sur chaque poste de travail.

L'un des principaux avantages des sources de données fichier réside dans leur portabilité. En effet, il suffit de copier le fichier DSN sur un autre ordinateur disposant du pilote ODBC approprié pour retrouver immédiatement les mêmes paramètres de connexion. Cette caractéristique permet aux applications de s'appuyer sur une configuration uniforme et cohérente, quel que soit le poste de travail utilisé. Les administrateurs peuvent ainsi réduire considérablement le temps consacré au déploiement et à la maintenance des connexions vers les bases de données, tout en limitant les risques d'erreur liés à une configuration manuelle.

Les sources de données fichier facilitent également le partage des informations de connexion dans un environnement réseau. Plutôt que de conserver une copie distincte de la configuration sur chaque ordinateur, il est possible de placer le fichier DSN sur un serveur central ou dans un répertoire partagé. Tous les ordinateurs autorisés peuvent alors utiliser cette même source de données, ce qui garantit que les paramètres demeurent identiques pour l'ensemble des utilisateurs. Lorsqu'une modification est nécessaire, par exemple un changement de serveur, de base de données ou de pilote, une seule mise à jour du fichier suffit pour que tous les postes bénéficient immédiatement de la nouvelle configuration.

Cette méthode simplifie grandement l'administration des infrastructures informatiques, notamment dans les entreprises où de nombreux utilisateurs doivent accéder à une même base de données. En centralisant les fichiers DSN, les équipes informatiques disposent d'un point unique de gestion des paramètres de connexion, ce qui facilite les opérations de maintenance, de sauvegarde et de contrôle des accès. Cette organisation contribue également à assurer une meilleure cohérence entre les différents environnements de travail et à réduire les risques liés aux configurations divergentes.

Une source de données fichier peut également être configurée comme non partageable. Dans ce cas, le fichier DSN est conservé sur un seul ordinateur et ne sert qu'à référencer une source de données machine existante sur ce même poste. Bien que le fichier soit toujours utilisé comme intermédiaire, il n'a pas vocation à être copié ou partagé avec d'autres utilisateurs. Cette approche permet de bénéficier de la simplicité des fichiers DSN tout en conservant les avantages de sécurité associés aux sources de données machine locales.

Les sources de données fichier non partageables sont particulièrement utiles lorsqu'une application doit accéder à une source de données machine existante sans modifier sa configuration d'origine. Elles offrent une couche d'abstraction supplémentaire permettant de réutiliser des paramètres déjà définis tout en conservant une séparation claire entre les applications et les informations de connexion. Cette flexibilité facilite les migrations, les tests ainsi que le développement de nouvelles applications reposant sur une infrastructure ODBC déjà en place, sans devoir recréer l'ensemble des paramètres de connexion.

Chaînes de connexion

Dans une application ou un module logiciel, il est possible de définir une chaîne de connexion (connection string) contenant l'ensemble des paramètres nécessaires pour établir une communication avec une source de données. Cette chaîne est une suite de paramètres formatés selon une syntaxe précise et comprend généralement des informations telles que le nom du pilote ODBC, le serveur de base de données, le nom de la base de données, les informations d'authentification, le port de communication ou encore diverses options de sécurité. En regroupant tous ces éléments dans une seule chaîne de caractères, l'application dispose de toutes les informations requises pour ouvrir une connexion sans dépendre d'une configuration externe.

Lorsqu'une application utilise une chaîne de connexion, celle-ci est transmise directement au Gestionnaire de pilotes ODBC, qui interprète les différents paramètres avant de les transmettre au pilote correspondant à la base de données ciblée. Le gestionnaire se charge alors de sélectionner le bon pilote ODBC, d'initialiser la connexion et de transmettre les informations nécessaires au serveur de bases de données. Ce mécanisme permet à l'application de communiquer avec une grande variété de systèmes de gestion de bases de données sans avoir à connaître les détails internes propres à chaque pilote.

L'un des principaux avantages des chaînes de connexion est qu'elles permettent de supprimer la dépendance aux noms de sources de données (DSN). En effet, toutes les informations de connexion étant directement incluses dans la chaîne, il n'est plus nécessaire qu'un administrateur système ou qu'un utilisateur crée préalablement une source de données dans le Gestionnaire ODBC de Windows. Cette approche simplifie considérablement le déploiement des applications, particulièrement lorsque celles-ci doivent être installées sur un grand nombre d'ordinateurs ou exécutées dans des environnements variés.

Les chaînes de connexion offrent également une grande souplesse de configuration. Il est facile de modifier un serveur, une base de données ou un mode d'authentification simplement en adaptant les paramètres de la chaîne, sans devoir intervenir dans la configuration ODBC du système d'exploitation. Cette flexibilité facilite les changements d'environnement, par exemple lors du passage d'un serveur de développement à un serveur de test ou de production. De nombreuses applications permettent d'ailleurs de stocker ces chaînes dans des fichiers de configuration afin de pouvoir les modifier sans recompiler le programme.

Enfin, les chaînes de connexion contribuent à simplifier l'architecture générale d'une application en centralisant les informations nécessaires à l'accès aux données. Elles réduisent le nombre d'étapes de configuration requises avant l'utilisation d'une base de données et facilitent l'automatisation du déploiement des logiciels. Bien qu'elles soient très pratiques, elles doivent néanmoins être protégées avec soin, notamment lorsqu'elles contiennent des identifiants ou des mots de passe, afin d'éviter tout accès non autorisé aux bases de données auxquelles elles donnent accès.

Liste des pilotes

Voici un tableau regroupant les principaux pilotes ODBC utilisés :

Base de données Nom du pilote ODBC Intégré Fabricant
Microsoft Access (.mdb, .accdb) Microsoft Access Driver (*.mdb, *.accdb) Oui (Microsoft Office / Access Database Engine) Microsoft
Microsoft SQL Server ODBC Driver for SQL Server Non (installation séparée) Microsoft
Microsoft SQL Server (ancien) SQL Server Native Client (SNAC) Non Microsoft
Microsoft SQL Server (ancien) SQL Server Oui (anciennes versions de Windows) Microsoft
MySQL MySQL Connector/ODBC (anciennement MyODBC) Non Oracle Corporation
PostgreSQL psqlODBC Non PostgreSQL Global Development Group
Oracle Database Oracle ODBC Driver Non (Oracle Instant Client ou Oracle Client) Oracle Corporation
IBM Db2 (LUW, z/OS, IBM i) IBM Data Server Driver for ODBC and CLI Non IBM
SQLite SQLite ODBC Driver Non Christian Werner
MariaDB MariaDB Connector/ODBC Non MariaDB Foundation / MariaDB plc
Firebird Firebird ODBC Driver Non Firebird Project
InterBase InterBase ODBC Driver Non Embarcadero Technologies
Sybase ASE SAP Adaptive Server Enterprise ODBC Driver Non SAP
SAP HANA SAP HANA ODBC Driver Non SAP
Informix IBM Informix ODBC Driver Non IBM
Teradata Teradata ODBC Driver Non Teradata Corporation
Amazon Redshift Amazon Redshift ODBC Driver Non Amazon Web Services
Snowflake Snowflake ODBC Driver Non Snowflake Inc.
Apache Hive Hive ODBC Driver Non Apache Software Foundation / Simba
Apache Impala Impala ODBC Driver Non Cloudera / Simba
MongoDB MongoDB BI Connector ODBC Driver Non MongoDB Inc.
Microsoft Excel Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm) Oui (Access Database Engine) Microsoft
Fichiers texte (CSV, TXT) Microsoft Text Driver (*.txt, *.csv) Oui Microsoft
Fichiers dBase Microsoft dBASE Driver (*.dbf) Oui Microsoft
Paradox Microsoft Paradox Driver (*.db) Oui (anciennes versions de Windows/Office) Microsoft
FoxPro Microsoft Visual FoxPro Driver Oui (anciennes versions de Windows) Microsoft

Liste des versions

Version Date de réalisation Plateforme Commentaires
1.0 Septembre 1992 Windows 3.1 Première version officielle d'ODBC publiée par Microsoft. Introduction d'une API standard pour l'accès aux bases de données relationnelles.
2.0 1994 Windows 3.1, Windows NT 3.1 Amélioration importante de l'API, nouvelles fonctions et meilleure prise en charge des pilotes ODBC.
2.5 1994 Windows 3.1, Windows NT 3.5 Version intermédiaire améliorant la compatibilité avec les pilotes et les gestionnaires de pilotes ODBC.
3.0 1995 Windows 95, Windows NT 3.51 Refonte majeure de l'architecture ODBC, ajout des descripteurs, amélioration des performances et de la compatibilité avec SQL-92.
3.5 1997 Windows 95, Windows 98, Windows NT 4.0 Optimisation de l'API, meilleure prise en charge Unicode et amélioration de la stabilité des pilotes.
3.8 2009 Windows 7, Windows Server 2008 R2 Introduction de nouvelles fonctionnalités pour les applications multithread, les connexions asynchrones et les pilotes conscients du regroupement de connexions (connection pooling).
4.0 2016 Windows 10, Windows Server 2016, Linux, macOS Nouvelle génération d'ODBC destinée aux sources de données modernes (SQL, NoSQL, Big Data, Cloud). Première implémentation avec SQL Server 2017. La spécification continue d'évoluer sur GitHub sans changement de numéro de version.
4.0 (mise à jour) 2017 Windows, Linux, macOS Première implémentation publique dans les pilotes Microsoft ODBC pour SQL Server 2017.
4.0 (évolution continue) 2018 à aujourd'hui Windows, Linux, macOS Ajout progressif de fonctionnalités modernes (types de données avancés, sécurité renforcée, authentification moderne, Microsoft Entra ID, optimisations Cloud, nouvelles capacités SQL) sans modification du numéro de version de la spécification.
... ... ... ...

Ajouter une source de données ODBC (Create an ODBC Data Source)

Avant de créer une nouvelle source de données ODBC (ODBC Data Source), vous devez tout d'abord obtenir et installer le pilote ODBC (ODBC Driver) correspondant au système de gestion de base de données (SGBD) auquel vous souhaitez accéder. Chaque type de base de données possède généralement son propre pilote, par exemple Microsoft SQL Server, MySQL, PostgreSQL, Oracle Database, IBM Db2, SQLite ou encore Microsoft Access. Sans ce pilote, le Gestionnaire ODBC ne pourra pas communiquer avec la base de données.

Remarque

Procédure détaillée

Voir également

Langage de programmation - MySQL - MyODBC

Dernière mise à jour : Samedi, le 16 février 2020