32 位和 64 位 ODBC 驱动程序之间的体系结构不匹配
Posted
技术标签:
【中文标题】32 位和 64 位 ODBC 驱动程序之间的体系结构不匹配【英文标题】:Architecture mismatch between 32-bit and 64-bit ODBC drivers 【发布时间】:2014-06-25 19:10:37 【问题描述】:我已经阅读了大部分关于 32 位/64 位 ODBC 驱动程序和应用程序不匹配的讨论。我已经实施了与我的问题中的错误消息有关的文章中的建议,但仍然没有成功。我最近从 Windows XP 转换到 Windows 8.1,并试图重新建立我在 XP 中的数据库连接。我将 localhost 与 Active Server Pages(经典 ASP)一起使用,通过系统 DSN 从本地 MS Access 数据库提供数据——一切都是 32 位的,并且在同一台机器上。我已经在我的新 Windows 8.1 机器上启用了所有相关的 IIS 参数,但不断收到主题行中描述的错误消息。显然,32 位应用程序和 64 位平台之间存在不匹配,但大多数文章建议的解决方法不起作用(即,从 sysWoW64 文件夹中的 ODBC 管理器创建系统 DSN)。请帮忙。
【问题讨论】:
您是否根据here 和here 提出的建议检查了配置设置? 在默认应用程序池中启用 32 位应用程序可以解决问题。感谢您的建议。 【参考方案1】:您需要从 Microsoft 下载中心下载 Microsoft Access Database Engine 2010 Redistributable。 32 位驱动程序和 64 位驱动程序均可用。 什么有效?
如果您有没有安装 Office 的 64 位服务器,请安装 64 位驱动程序。
如果您有一个 64 位服务器并安装了 32 位办公室,请安装 32 位驱动程序*。
如果您有没有安装 Office 的 32 位服务器,请安装 32 位驱动程序。
如果您有一个安装了 32 位 Office 的 32 位服务器,请安装 32 位驱动程序。
*如果您尝试在 64 位机器上安装 32 位驱动程序,则安装程序会报错并失败。但是,如果您通过具有管理员权限的命令行 (cmd.exe) 安装它,则安装有一个覆盖标志。
AccessDatabaseEngine_x64.exe /passive
ASP 经典连接字符串
访问文件
<%
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\temp\Database1.mdb;Persist Security Info=False;"
Con.Close
%>
Excel 文件
<%
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\temp\book1.xlsx;Extended Properties=Excel 12.0;"
Con.Close
%>
从microsoft download center下载两个驱动程序
【讨论】:
当我按照这些说明进行操作时,我收到一条错误消息,内容为:找不到文件 'c:\windows\system32\inetsrv[].mdb'。 [] 是我的数据库文件名和我的数据库所在的子文件夹的串联。 找不到文件表明您在连接字符串中设置的数据库文件路径不正确,或者您没有读取该位置数据库的文件权限。 'C:\windows\system32' 是一个系统文件夹,其中不应该有任何用户内容。将数据库移动到 c:\windows 路径之外的文件夹,并在连接字符串的数据源部分中使用完整文件路径引用它,例如'数据源=C:\mydatabase\Database1.mdb;'.以上是关于32 位和 64 位 ODBC 驱动程序之间的体系结构不匹配的主要内容,如果未能解决你的问题,请参考以下文章
odbc驱动程序SQORA32.DLL可能是32位还是64位?
在两个 C# 应用程序(32 位和 64 位)之间进行 IPC 的最佳方式是啥