【问题标题】:ODBC Error Drivers error '80004005' with 32bit applications enabled启用 32 位应用程序的 ODBC 错误驱动程序错误“80004005”
【发布时间】:2018-10-14 02:06:04
【问题描述】:

我正在尝试跟进我的学校项目,并且完全按照他们的建议设置 IIS,包括允许 32 位应用程序。但是,尽管从头开始在 2 台不同的计算机上尝试此操作,但它仍然无法正常工作。我收到错误消息:

用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80004005”

[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

/LEGO STORE/Program.asp,第 17 行

我的代码如下:

<%
        dim con, rs, sql
        Set con = Server.CreateObject("ADODB.Connection")
        Set rs = Server.CreateObject("ADODB.Recordset")

        con.open("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & Server.MapPath("Lego.accdb"))

        sql = "SELECT * FROM Table1"

        rs.Open sql, con
        %>

我不知道为什么它不工作,在修复之前我无法继续我的项目。这些文件是从我的计算机托管的,而不是使用单独的服务器。我检查了现有的解决方案,但它们是针对不同版本的 IIS 的,我不知道它们有何不同。

【问题讨论】:

  • 该 8004 消息确实表明位大小不匹配。我会考虑在与 Web 服务器相同的机器上安装用于 Access 的 x64 驱动程序。当您启用 x32 应用程序时,您的进程中代码仍可能以 x64 运行。另一个解决方案是安装 + 运行 x32 IIS。既然你有一个工作设置,我会安装访问 x64 驱动程序。

标签: ms-access asp-classic iis-10


【解决方案1】:

如果您使用的是 IIS 7 或更高版本,您还需要配置应用程序池以允许使用 32 位:

  1. 右键单击应用程序池并选择“高级设置...”
    或在选择
    后从“操作”窗格中选择相同的 应用程序池
  2. 将“启用 32 位应用程序”更改为 True,然后单击确定

【讨论】:

    【解决方案2】:

    有两种与 MS Access 程序相关的数据库,JET(.mdb 文件)和 ACE(.accdb 文件)。较新的 ACE 格式是在 2007 年推出的,早在 Classic ASP 被视为“传统”之后很久,所以任何处理 Classic ASP 和 Access 的教程都会假设您使用的是 JET 数据库。用于 JET 的 ADODB 驱动程序,随 IIS 支持的 Windows 版本一起提供,只有 32 位。 ACE 的 ADODB 驱动程序不包括在内,您必须自己下载并安装它。它确实有 64 位版本,据我所知只有有 64 位版本。

    我怀疑实现您想要实现的最轻松的方法是打开 Access 并以较旧的 .mdb 格式保存数据库版本。

    OLEDB 连接字符串通常优于 ODBC 连接字符串。在您的情况下,连接字符串将是:

    con.open("Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("Lego.mdb"))
    

    www.connectionstrings.com 是一个很好的资源,(也是一个非常容易记住的网址)。

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多