Comment utiliser un pilote ODBC 32 bits sur le serveur 64 bits 2008 lorsque l'installateur ne crée pas de DSN standard?

StackOverflow https://stackoverflow.com/questions/1134827

Question

J'ai rencontré un problème avec certains logiciels tiers que nous utilisons pour suivre l'utilisation de licences logicielles dans nos laboratoires informatiques. Nous avons récemment migré l'application vers 64 bits Server 2008 après avoir reçu des assurances de la société selon laquelle elle était compatible et exécuté certains tests préliminaires qui ont montré que l'application fonctionnait dans l'environnement 64 bits. Malheureusement, la personne qui fait le test n'a pas testé les fonctionnalités de quelques applications que j'ai qui comptent sur l'accès aux données pour faire à la fois en direct et en post-traitement sur les données pour produire des rapports.

Il s'avère que l'application n'a pas de pilote ODBC 64 bits pour accéder à ses données internes et ne peut pas utiliser un pilote ODBC SQL Server 64 bits pour exporter ses données sur SQL Server. Il inclut et installe un pilote ODBC 32 bits, mais il l'installe en tant que source de données utilisateur, et non comme une source de données système, ce qui signifie que mon service Windows qui exécute la collection en direct n'est pas en mesure de le trouver. Je ne suis pas non plus en mesure de créer un DSN système car la console d'administration des sources de données ne peut pas trouver le pilote installé.

Ma question est de savoir comment configurer une source de données pour cette connexion auquel je peux accéder à partir d'un service C # /. Net Windows en cours d'exécution sous un compte système?

Depuis que j'ai trouvé un moyen de le faire, je fournirai ma solution comme réponse (conformément à FAQ sur la façon de répondre à votre propre question).

Semblable à:Quels logiciels existent pour plier une application ODBC 64 bits à un pilote ODBC 32 bits sur Windows?

Était-ce utile?

La solution

Il s'avère que vous pouvez créer des connexions ODBC 32 bits en utilisant C:\Windows\SysWOW64\odbcad32.exe. Ma solution était de créer la connexion ODBC 32 bits en tant que DSN système. Cela ne m'a toujours pas permis d'y connecter car .net n'a pas pu le chercher. Après une recherche importante et infructueuse pour trouver comment obtenir la classe ODBCConnection pour rechercher le DSN dans le bon endroit, Je suis tombé sur un site Web qui a suggéré de modifier le registre pour résoudre un problème différent.

J'ai fini par créer la connexion ODBC directement sous HKLM\Software\ODBC. J'ai regardé dans la touche Syswow6432 pour trouver les paramètres qui ont été configurés à l'aide de la version 32 bits de l'outil d'administration ODBC et j'ai recréé à l'emplacement standard. Cependant, je n'ai pas ajouté d'entrée pour le pilote, car cela n'a pas été installé par l'installateur standard pour l'application non plus.

Après avoir créé l'entrée (à la main), j'ai tiré mon service Windows et tout était heureux.

Autres conseils

Ouvrez IIS Manager, sélectionnez les pools d'applications, sélectionnez le pool d'applications que vous utilisez, cliquez sur Paramètres avancés dans le menu de droite. Sous Général, définissez "Activer les applications 32 bits" à "vrai".

Beaucoup de ces réponses sont assez anciennes, alors j'ai pensé que je mettrais à jour avec une solution qui, je pense, est utile.

Notre problème était similaire aux OP, nous avons mis à niveau les machines XP 32 bits à 64 bits Windows 7 et notre logiciel d'application qui utilise un pilote ODBC 32 bits a cessé de pouvoir écrire dans notre base de données.

Il s'avère que il existe deux gestionnaires de source de données ODBC, un pour 32 bits et un pour 64 bits. J'ai donc dû exécuter la version 32 bits que l'on trouve dans C: Windows Syswow64 odbcad32.exe. À l'intérieur du gestionnaire de source de données ODBC, j'ai pu accéder à l'onglet DSN système et ajouter mon pilote à la liste à l'aide du bouton Ajouter. (Vous pouvez cocher l'onglet Planchers pour voir une liste des pilotes que vous pouvez ajouter, si votre pilote n'est pas dans cette liste, vous devrez peut-être l'installer).

Le prochain problème était le logiciel que nous avons exécuté a été compilé pour utiliser «n'importe quel processeur». Cela verrait que le système d'exploitation était de 64 bits, il examinerait donc les sources de données ODBC à 64 bits. J'ai donc dû forcer le programme à compiler en tant que programme X86, qui lui dit ensuite de regarder les sources de données ODBC 32 bits. Pour définir votre programme sur x86, dans Visual Studio, accédez à vos propriétés de projet et sous l'onglet Build en haut, il y a une liste déroulante de plate-forme et choisissez x86. Si vous n'avez pas le code source et que vous ne pouvez pas compiler le programme comme x86, vous pourrez peut-être cliquer avec le bouton droit sur le programme .exe et accéder à l'onglet Compatibilité et choisir une compatibilité qui vous convient.

Une fois que les chauffeurs ont ajouté et le programme pointant vers les bons pilotes, tout a fonctionné comme il le faisait. J'espère que cela aide toute personne travaillant avec des logiciels plus anciens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top