DSN système vs utilisateur DSN

7

Chaque nouvel ordinateur de mon entreprise est soumis au même processus d’installation logicielle; un programme en particulier doit accéder à une base de données MS SQL Server via ODBC. Le programme est ensuite utilisé par plusieurs utilisateurs du domaine sur le même ordinateur à des moments différents.

Sur les ordinateurs Windows XP, je configure simplement la connexion ODBC en tant que DSN système . Peu importe l'utilisateur connecté, la connexion fonctionnerait pour lui et mon travail était terminé.

Récemment, nous avons de plus en plus de machines Windows 7, et cette méthode ne semble plus fonctionner. Le programme ne reconnaît pas les connexions que j'ai configurées dans System DSN , mais il les reconnaît dans User DSN . Le problème que j'ai avec ceci est que chaque fois qu'un utilisateur se connecte à un ordinateur pour la première fois, je reçois un appel et j'ai besoin d'installer son propre DSN.

Quelle est la raison pour laquelle cela fonctionne sur XP, mais pas sur 7? Est-ce que je me suis trompé depuis le début?

Mise à jour: Peut-être que la raison n’est pas Windows 7, mais le fait que les nouveaux ordinateurs fonctionnent sous un système d’exploitation 64 bits. Je dis cela parce que, lorsque j'ai exécuté une application de test ( le code source ici ) sous Windows 7 64 bits, l'accès au DSN utilisateur fonctionnait bien, mais l'accès au DSN système donnait le message d'erreur suivant:

IM014: le DSN spécifié contient une incompatibilité d'architecture entre le pilote et l'application

La documentation de Microsoft indique que cela se produit lorsqu'un pilote 32 bits est utilisé sur un ordinateur 64 bits ou inversement. Cela pourrait très bien être le problème, car lorsque j'ai basculé l'application de test sur 64 bits, l'accès au DSN système était possible.

La question qui se pose maintenant est la suivante: pourquoi cela se produit-il pour le DSN système, mais pas pour le DSN utilisateur? Des pilotes différents sont-ils installés pour les deux? Cela signifie que je ne pourrai plus utiliser le DSN système, car je n’ai aucune influence sur les logiciels que nous devons utiliser.

Waldrumpus
la source

Réponses:

7

L'article de Microsoft sur la gestion des sources de données dit ce qui suit:

Pour gérer une source de données qui se connecte à un pilote 32 bits sous une plate-forme 64 bits, utilisez c:\windows\sysWOW64\odbcad32.exe. Pour gérer une source de données qui se connecte à un pilote 64 bits, utilisez c:\windows\system32\odbcad32.exe. Dans les outils d'administration d'un système d'exploitation Windows 8 64 bits, il existe des icônes pour la boîte de dialogue Administrateur de sources de données ODBC 32 bits et 64 bits.

Si vous utilisez le fichier odbcad32.exe 64 bits pour configurer ou supprimer un DSN qui se connecte à un pilote 32 bits, par exemple Pilote pour Microsoft Access (* .mdb), vous recevrez le message d'erreur suivant:

Le DSN spécifié contient une incompatibilité d'architecture entre le pilote et l'application

Pour résoudre cette erreur, utilisez le fichier odbcad32.exe 32 bits pour configurer ou supprimer le DSN.

Votre application est évidemment 32 bits. Avez-vous utilisé le bon odbcad32.exe pour définir le DSN?

harrymc
la source
Non, je n'ai pas; Je n'avais aucune idée qu'il y avait deux versions. Je suis époustouflé - ça marche. Je vous remercie!
waldrumpus
Désolé, je n'ai pas distribué la prime plus tôt; Je pensais que cela se produirait automatiquement en marquant votre message comme la réponse acceptée.
Waldrumpus
Je ne pense pas que cela soit plus nécessaire sous Windows 7 64 bits. L'exécution de l'une ou l'autre version amène la même console avec les mêmes DSN définis. En utilisant simplement la boîte de dialogue Exécuter, en tapant "odbcad32.exe" et en définissant un DSN, j'ai pu accéder à ce DSN via mes langages de script.
AndrewPK
@AndrewPK: Le poster fonctionnait sous Windows 7 64 bits.
harrymc
0

Droits de l'utilisateur: Assurez-vous que l'utilisateur a la possibilité d'accéder au DNS système ou au DNS utilisateur. La situation ici était que Lotus-Notes était exécuté en tant que service sous l'utilisateur SYSTEM. Il n'y avait pas de connectivité à ODBC. Nous avons changé l'utilisateur pour le service et cela a résolu le problème.

Egal
la source