Ich arbeite mit einer älteren Anwendung, die ich kürzlich auf .NET 4.5 aktualisiert habe. Die Anwendung hat DSN ODBC-Verbindungen verwendet. Im Fall der Anwendung wird jedoch von einem einzelnen Ort auf einem Netzlaufwerk zugegriffen, so dass es nicht sinnvoll ist, einen DSN zu verlangen, und es erleichtert die Bereitstellung und Updates, um eine DSN-lose Verbindungszeichenfolge zu verwenden . Ich mache eine grundlegende Zeichenfolge als solche:
%Vor%Das Problem, das ich habe, ist, dass die Anwendung als 32-Bit kompiliert wird, aber auf einer 32-Bit- oder 64-Bit-Maschine verwendet werden kann. Auf 64-Bit-Maschinen bekomme ich diesen Fehler:
Der angegebene DSN enthält eine Architekturabweichung zwischen dem Treiber und Anwendung
Was im Wesentlichen bedeutet, dass es versucht, den 64-Bit-Treiber für die 32-Bit-Anwendung zu verwenden. Das ist einfach genug, aber der Treibername für SQL Server scheint für 32 und 64 Bit identisch zu sein. Also, wie kann ich nur den 32-Bit-Treiber in der Verbindungszeichenfolge angeben?
"Verwenden Sie c: \ windows \ sysWOW64 \ odbcad32.exe, um eine Datenquelle zu verwalten, die eine Verbindung zu einem 32-Bit-Treiber unter einer 64-Bit-Plattform herstellt. So verwalten Sie eine Datenquelle, die eine Verbindung zu einem 64-Bit herstellt Verwenden Sie c: \ windows \ system32 \ odbcad32.exe, unter Verwaltung auf einem 64-Bit-Windows 8-Betriebssystem Symbole für das 32-Bit- und das 64-Bit-ODBC-Datenquellen-Administrator-Dialogfeld. Lesen Sie mehr "
Wenn Sie die 64-Bit-Datei odbcad32.exe zum Konfigurieren oder Entfernen eines DSN verwenden, der eine Verbindung zu einem 32-Bit-Treiber herstellt, erhalten Sie die folgende Fehlermeldung:
Der angegebene DSN enthält eine Architekturabweichung zwischen dem Treiber und der Anwendung
Um diesen Fehler zu beheben, verwenden Sie die 32-Bit-Datei odbcad32.exe, um den DSN zu konfigurieren oder zu entfernen.
Referenzen
Side Hinweis: stellen Sie sicher, dass alle Referenzen Copy Local
-Eigenschaft auf True festgelegt ist, auch die System Assemblies. Ich denke, dass das Problem von dem Assembly-Speicherort stammen kann, der in GAC gespeichert wird. Wenn Sie die Assembly lokal kopieren, kann es das
Tags und Links sql-server odbc database-connection 32-bit dsn