我最近在Windows 7 Ultimate x64家用机器上安装了SQL Server 2008 Express。我还有IIS 7.5和PHP 5.3,我试图通过ADODB连接到SQL,但一直收到这个错误:
[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application
在互联网上进行少量挖掘之后,我认为这是因为SQL Server ODBC驱动程序适用于32位操作系统,而我的64位操作系统。首先,我是否正确?这是我遇到麻烦的原因吗?其次,如果是这样,我该如何解决这个问题呢?是否有任何更新的ODBC驱动程序可以与64位操作系统一起使用?我看了但是找不到任何......
答案 0 :(得分:27)
你是对的,因为它与比特有关。
希望这会有所帮助:
- 来自MSDN -
管理连接到64位下的32位驱动程序的数据源 平台,使用c:\ windows \ sysWOW64 \ odbcad32.exe。管理数据 使用连接到64位驱动程序的源 C:\ WINDOWS \ SYSTEM32 \ odbcad32.exe的。如果您使用64位odbcad32.exe 配置或删除连接到32位驱动程序的DSN 收到此消息。
答案 1 :(得分:4)
尝试使用Pervasive ODBC客户端接口将64位SQL 2012服务器链接到“Sage Timberline”时,我遇到了同样的问题。
我可以设置32位DSN,但在尝试使用32位DSN创建链接服务器时,SQL Server不断给出“架构不匹配”错误。
答案 2 :(得分:2)
我尝试C:\Windows\SysWOW64\odbcad32.exe
添加驱动程序。但是当我在MAS90和SQL Server 2008 R2之间设置链接服务器时,我仍然遇到架构不匹配错误。刚与Sage的一个人谈过,他说它不适用于64位版本的Sql Server。仅当Sql Server的版本为32位时,链接服务器才能与MAS90配合使用。
答案 3 :(得分:1)
我打赌你正在使用用户DSN。
根据您的观点,64位Windows环境中存在“功能”或“错误” -
32位用户DSN出现在64位管理员中,当64位客户端应用程序要求所有可用的DSN时 - 即使32位DSN无法使用由64位客户端应用程序和管理员。
64位用户DSN出现在32位管理员中,当32位客户端应用程序要求所有可用的DSN时 - 即使64位DSN无法使用由32位客户端应用程序和管理员。
如果DSN与尝试使用它的客户端之间出现如此严重的不匹配,则会出现您描述的错误消息。
Microsoft的建议是使用_32或_64命名您的用户DSN,具体取决于它们所基于的驱动程序的位数......或坚持使用系统DSN。
您可以使用32位和64位解决方案进行连接。客户端应用程序的位数 - IIS&在这种情况下,PHP决定了你需要的解决方案的位数。
答案 4 :(得分:1)
如果64位操作系统上的32位应用程序(您在[程序文件(X86)下安装的应用程序]使用以下 C:\的Windows \ Syswow64资料\ odbcad32.exe的
否则64位应用程序和64位操作系统使用以下内容 C:\ Windows \ System32 \ odbcad32.exe
否则您将收到类似“建筑不匹配”的错误
希望这可以节省某人的一天:)
答案 5 :(得分:0)
这对我有用: 更新的解决方案,确保IIS应用程序未在x64 Windows上设置为32位。更多信息: http://forum.gpsgate.com/topic.asp?TOPIC_ID=13711 从: