L’outil Administrateur ODBC affiche les DSN utilisateur 32 bits et 64 bits dans une version 64 bits de Windows

Cet article fournit une solution de contournement pour le problème qui se produit dans l’outil Administrateur de source de données ODBC.

Version du produit d’origine :   SQL Server
Numéro de l’article d’origine dans la base de connaissances :   942976

Symptômes

Une version 64 bits du système d’exploitation Microsoft Windows inclut les versions suivantes de l’outil Administrateur de source de données ODBC (Odbcad32.exe) :

  • La version 32 bits du fichier Odbcad32.exe se trouve dans le dossier %systemdrive%\Windows\SysWoW64.
  • La version 64 bits du fichier Odbcad32.exe se trouve dans le dossier %systemdrive%\Windows\System32.

Le fichier Odbcad32.exe affiche les types suivants de noms de sources de données (DSN) :

  • DSN système
  • DSN utilisateur

Symptôme 1

La version 32 bits de l’outil Administrateur ODBC affiche des DSN système 32 bits, des DSN utilisateur 32 bits et des DSN utilisateur 64 bits. La version 64 bits de l’outil Administrateur ODBC affiche des DSN système 64 bits, des DSN utilisateur 32 bits et des DSN utilisateur 64 bits.

Symptôme 2

La fonction SQLDataSources renvoie toutes les versions de DSN utilisateur, quelle que soit l’architecture de l’application. La fonction SQLDataSources qui est appelée dans une application 32 bits renvoie uniquement des DSN système pour les pilotes 32 bits, mais renvoie des DSN utilisateur pour les pilotes 32 bits et les pilotes 64 bits. De même, la fonction SQLDataSources qui est appelée dans une application 64 bits renvoie uniquement des DSN système pour les pilotes 64 bits, mais renvoie des DSN utilisateur pour les pilotes 32 bits et les pilotes 64 bits. Par conséquent, si l’application établit une connexion en utilisant un DSN utilisateur qui est renvoyé depuis la fonction SQLDataSources, le message d’erreur suivant peut s’afficher :

Source de données introuvable et nom de pilote non spécifié

Par exemple, envisagez le scénario suivant : Vous créez un DSN utilisateur pour le pilote 32 bits « Pilote Microsoft Access (*.mdb) ». Ce pilote n’a pas de version 64 bits correspondante. La fonction SQLDataSources qui est appelée dans une application 64 bits renvoie ce DSN utilisateur 32 bits. Cependant, si vous établissez une connexion au moyen de ce DSN utilisateur 32 bits, le message d’erreur mentionné plus haut dans cette section s’affiche.

Cause

Les DSN utilisateur sont stockés sous la sous-clé de Registre suivante :

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

La redirection du Registre n’est pas activée pour cette sous-clé de Registre. Par conséquent, les DSN utilisateur sont visibles dans les versions 32 bits et 64 bits de l’outil Administrateur ODBC.

Résolution

Pour maintenir la compatibilité descendante, aucune résolution pour ce problème n’est actuellement disponible.

Solution de contournement

Pour contourner ce problème, utilisez la version appropriée de l’outil Administrateur ODBC. Si vous générez et exécutez une application sous la forme d’une application 32 bits sur un système d’exploitation 64 bits, vous devez créer la source de données ODBC en utilisant l’outil Administrateur ODBC dans %windir%\SysWOW64\odbcad32.exe. Pour indiquer le type de DSN, vous pouvez ajouter « _32 » aux DSN utilisateur 32 bits et « _64 » aux DSN utilisateur 64 bits.

Informations supplémentaires

L’outil Administrateur ODBC 64 bits peut être invoqué à partir du Panneau de configuration pour gérer les DSN utilisateur et les DSN système utilisés par les processus 64 bits. Sur un système d’exportation 64 bits, l’outil Administrateur ODBC 32 bits est utilisé pour Windows sur les processus Windows 64 (WOW64). Vous devez appeler directement l’outil Administrateur ODBC 32 bits à partir du dossier SysWoW64. Vous pouvez utiliser l’outil Administrateur ODBC 32 bits pour gérer les DSN utilisateur et les DSN système qui sont utilisés par les processus WOW64.

Les DSN système sont stockés dans la sous-clé de Registre suivante :

HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI

La redirection du Registre est activée pour cette sous-clé de Registre. Par conséquent, les DSN système pour les pilotes 32 bits et pour les pilotes 64 bits sont séparés. L’outil Administrateur ODBC 64 bits ne peut pas afficher les DSN système qui sont créés par l’outil Administrateur ODBC 32 bits. De même, l’outil Administrateur ODBC 32 bits ne peut pas afficher les DSN système qui sont créés par l’outil Administrateur ODBC 64 bits. En outre, l’outil Administrateur ODBC 64 bits n’affiche pas les DSN système qui utilisent des pilotes 32 bits. De même, l’outil Administrateur ODBC 32 bits n’affiche pas les DSN système qui utilisent des pilotes 64 bits.

Les DSN utilisateur sont stockés dans la sous-clé de Registre suivante :

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

La redirection du Registre n’est pas activée pour cette sous-clé de Registre. Par conséquent, les deux outils Administrateur ODBC affichent tous les DSN utilisateur.

Pour plus d’informations sur la redirection du Registre, consultez l’article Redirecteur de Registre.