Jeder neue Computer in meinem Unternehmen durchläuft den gleichen Softwareinstallationsprozess. Insbesondere ein Programm muss über ODBC auf eine MS SQL Server-Datenbank zugreifen. Das Programm wird dann von mehreren Domänenbenutzern auf demselben Computer zu unterschiedlichen Zeiten verwendet.
Auf Windows XP-Computern habe ich die ODBC-Verbindung einfach als System-DSN eingerichtet . Egal welcher Benutzer angemeldet war, die Verbindung würde für ihn funktionieren und meine Arbeit war erledigt.
In letzter Zeit erhalten wir immer mehr Windows 7-Computer, und diese Methode scheint nicht mehr zu funktionieren. Das Programm erkennt die im System-DSN eingerichteten Verbindungen nicht , jedoch die im Benutzer-DSN . Das Problem dabei ist, dass jedes Mal, wenn sich ein Benutzer zum ersten Mal an einem Computer anmeldet, ein Anruf eingeht und ich seinen eigenen DSN installieren muss.
Was ist der Grund, warum dies unter XP funktioniert, aber nicht unter 7? Habe ich es von Anfang an falsch gemacht?
Update: Möglicherweise liegt das nicht an Windows 7, sondern an der Tatsache, dass auf den neuen Computern ein 64-Bit-Betriebssystem ausgeführt wird. Ich sage dies, weil beim Ausführen einer Testanwendung ( Quellcode hier ) unter 64-Bit-Windows 7 der Zugriff auf den Benutzer-DSN einwandfrei funktioniert hat, aber beim Zugriff auf den System-DSN die folgende Fehlermeldung angezeigt wurde:
IM014: Der angegebene DSN enthält einen Architekturfehler zwischen dem Treiber und der Anwendung
Die Microsoft-Dokumentation gibt an, dass dies geschieht, wenn auf einem 64-Bit-Computer auf einen 32-Bit-Treiber zugegriffen wird oder umgekehrt. Dies könnte sehr wohl das Problem sein, denn als ich die Testanwendung auf 64-Bit umstellte, konnte auf den System-DSN zugegriffen werden.
Die Frage ist nun: Warum passiert dies für System-DSN, aber nicht für Benutzer-DSN - sind für beide unterschiedliche Treiber installiert? Das würde bedeuten, dass ich den System-DSN nicht mehr verwenden kann, da ich keinen Einfluss auf die Software habe, die wir verwenden müssen.