Wie verwende ich einen 32-Bit-ODBC-Treiber auf 64-Bit-Server 2008, wenn der Installationsprogramm keinen Standard-DSN erstellt?

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

Frage

Ich habe ein Problem mit einer Software von Drittanbietern gestoßen, mit der wir in unseren Computerlabors die Nutzung der Softwarelizenz verfolgen. Wir haben kürzlich die App auf 64-Bit-Server 2008 migriert, nachdem wir vom Unternehmen die Zusicherungen erhalten hatten, kompatibel sei und einige vorläufige Tests durchgeführt haben, die zeigten, dass die App in der 64-Bit-Umgebung funktioniert hat. Leider testete die Person, die die Tests durchführt, die Funktionalität einiger Apps, die ich auf den Zugriff auf die Daten stütze, um sowohl Live- als auch Nachbearbeitung auf die Daten zu erstellen, um einige Berichte zu erstellen.

Es stellt sich heraus, dass die Anwendung keinen 64-Bit-ODBC-Treiber hat, um auf ihre internen Daten zuzugreifen, und kann keinen 64-Bit-SQL-Server-ODBC-Treiber verwenden, um seine Daten auf SQL Server zu exportieren. Es umfasst und installiert einen 32-Bit-ODBC-Treiber, installiert ihn jedoch als Benutzerdatenquelle, nicht als Systemdatenquelle, was bedeutet, dass mein Windows-Dienst, der die Live-Sammlung ausführt, nicht in der Lage ist, sie zu finden. Ich bin auch nicht in der Lage, ein System DSN zu erstellen, da die Datenquellen Admin -Konsole den installierten Treiber nicht finden können.

Meine Frage ist, wie ich eine Datenquelle für diese Verbindung konfigurieren kann, auf die ich von einem C#/. NET -Windows -Dienst zugreifen kann, der unter einem Systemkonto ausgeführt wird.

Da ich einen Weg dazu herausgefunden habe, werde ich meine Lösung als Antwort anbieten (im Einklang mit dem FAQ wie Sie Ihre eigene Frage beantworten können).

Ähnlich zu:Welche Software gibt es für die Überbrückung einer 64-Bit-ODBC-App zu einem 32-Bit-ODBC-Treiber unter Windows?

War es hilfreich?

Lösung

Es stellt sich heraus, dass Sie 32-Bit-ODBC-Verbindungen verwenden können C:\Windows\SysWOW64\odbcad32.exe. Meine Lösung war es, die 32-Bit-ODBC-Verbindung als System DSN zu erstellen. Dies erlaubte mir immer noch nicht, eine Verbindung dazu herzustellen, da .NET es nicht nachschlagen konnte. Nach signifikanter und fruchtloser Suche, um zu finden richtiger Ort, Ich bin auf eine Website gestoßen, die vorschlug, die Registrierung zu ändern, um ein anderes Problem zu lösen.

Am Ende habe ich die ODBC -Verbindung direkt unter erstellt HKLM\Software\ODBC. Ich habe in der Taste SYSWOW6432 gesucht, um die Parameter zu finden, die mit der 32-Bit-Version des ODBC-Verwaltungstools eingerichtet wurden, und diese am Standardort nachgebildet. Ich habe jedoch keinen Eintrag für den Treiber hinzugefügt, da dies auch nicht vom Standardinstallationsprogramm für die App installiert wurde.

Nachdem ich den Eintrag (von Hand) erstellt hatte, habe ich meinen Windows -Service gestrichen und alles war glücklich.

Andere Tipps

Öffnen Sie den IIS-Manager, wählen Sie Bewerbungspools, wählen Sie den von Ihnen verwendeten Anwendungspool aus. Klicken Sie im Menü rechte Hand auf erweiterte Einstellungen. Setzen Sie unter allgemein "32-Bit-Anwendungen" auf "True".

Viele dieser Antworten sind ziemlich alt, daher dachte ich, ich würde mit einer Lösung aktualisieren, die ich für hilfreich halte.

Unser Problem war ähnlich wie bei OPs. Wir haben 32 -Bit -XP -Maschinen auf 64 -Bit -Windows 7 aktualisiert, und unsere Anwendungssoftware, bei der ein 32 -Bit -ODBC -Treiber verwendet wurde, konnte nicht mehr in unsere Datenbank geschrieben werden.

Es stellt sich heraus, dass es zwei ODBC -Datenquellmanager gibt, eine für 32 Bit und eine für 64 -Bit. Also musste ich die 32 -Bit -Version ausführen, die in C: Windows sywow64 odbcad32.exe gefunden wurde. Im ODBC -Datenquellmanager konnte ich zur Registerkarte System DSN gehen und meinen Treiber mit der Schaltfläche Hinzufügen hinzufügen. (Sie können die Registerkarte Treiber überprüfen, um eine Liste der Treiber anzuzeigen, die Sie hinzufügen können. Wenn Ihr Fahrer nicht in dieser Liste ist, müssen Sie sie möglicherweise installieren.)

Die nächste Ausgabe war die Software, die wir betrieben haben, wurde zusammengestellt, um "jede CPU" zu verwenden. Dies würde sehen, dass das Betriebssystem 64 -Bit betrug, sodass es die 64 -Bit -ODBC -Datenquellen betrachtet würde. Daher musste ich das Programm zum kompilierten Programm als X86 -Programm erzwingen, das dann aufweist, dass es die 32 -Bit -ODBC -Datenquellen betrachtet. Um Ihr Programm auf x86 festzulegen, gehen Sie in Visual Studio zu Ihren Projekteigenschaften und unter der Registerkarte "Build" oben befinden sich eine Plattform -Dropdown -Liste und wählen Sie x86. Wenn Sie den Quellcode nicht haben und das Programm nicht als X86 kompilieren können, können Sie möglicherweise mit der rechten Maustaste auf das Programm .exe klicken und zur Registerkarte Kompatibilität wechseln und eine für Sie geeignete Kompatibilität auswählen.

Sobald ich die Fahrer hinzugefügt hatte und das Programm, das auf die richtigen Fahrer hinweist, funktionierte alles so, als hätte es dies benutzt. Hoffentlich hilft dies jedem, der mit älterer Software arbeitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top