Jar*_*man 8 sql-server odbc database-connection 32-bit dsn
我正在使用我最近更新到.NET 4.5的旧应用程序.该应用程序一直在使用DSN ODBC连接.但是,对于应用程序,它是从网络驱动器上的单个位置访问的,因此要求DSN没有意义,并且它将简化部署和更新以使用无DSN的连接字符串到位.我正在做一个基本的字符串:
Driver={SQL Server}; Server=; Database=; UID=; PWD=
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是应用程序编译为32位,但可以在32位或64位机器上使用.在64位机器上我收到此错误:
指定的DSN包含驱动程序和应用程序之间的体系结构不匹配
这本质上意味着它正在尝试将64位驱动程序用于32位应用程序.这很容易处理,除了SQL Server的驱动程序名称对于32位和64位似乎是相同的.那么如何在连接字符串中仅指定32位驱动程序?
“要管理64位平台下连接到32位驱动程序的数据源,请使用c:\windows\sysWOW64\odbcad32.exe。要管理连接到64位驱动程序的数据源,请使用c:\ windows\system32\odbcad32.exe。在 64 位 Windows 8 操作系统上的管理工具中,有 32 位和 64 位 ODBC 数据源管理器对话框的图标。阅读更多"
如果您使用 64 位 odbcad32.exe 配置或删除连接到 32 位驱动程序的 DSN,您将收到以下错误消息:
指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配
要解决此错误,请使用 32 位 odbcad32.exe 配置或删除 DSN。
参考
旁注:确保所有引用Copy Local属性都设置为 True,甚至是系统程序集。我认为问题可能出在 GAC 中保存的程序集位置,因此在本地复制程序集时可能会修复该问题