【问题标题】:IIS 7 and Ms Access 2007 32 bit on Windows7 (64 bit)Windows7 上的 IIS 7 和 Ms Access 2007 32 位(64 位)
【发布时间】:2014-10-30 05:42:30
【问题描述】:

系统信息:
Windows 专业版。 64位。
IIS 7.0
Ms Office 2007 32 位(来自任务管理器)
没有 Visual Studio。
运行经典的 ASP

需要连接 MS Access 2007 数据库。

<%
    Dim objCon
    Dim objRec
    Dim objSql
    Set objCon = Server.CreateObject("ADODB.Connection")
    objCon.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Server.MapPath("db/dbTest.accdb")
    Set objRec = Server.CreateObject("ADODB.Recordset")     
    objSql = "select * from tblLogin;"  
    objRec.Open objSql, objCon
    Do While not objRec.EOF
        Response.Write ("<br>")
        Response.Write (objRec("uid")) 
        Loop    
    %>

在 .asp 文件中使用上述代码。

错误消息:处理 URL 时服务器发生错误。 请联系系统管理员。 如果您是系统管理员,请单击此处了解有关此错误的更多信息。

我做了什么:
按照上面的链接信息。
在 IIS 管理器中启用 32 位应用程序。
在 64 iis 上启用 32 位应用程序
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
使用以下选项手动选择 .accdb(这是正确的方法吗?) %windir%\syswow64\odbcad32.exe

【问题讨论】:

    标签: iis vbscript asp-classic ms-access-2007


    【解决方案1】:

    如果是 Access 2003 或更早版本,数据库将具有扩展名 .mdb,而不是 .accdb

    使用 JET OLEDB 驱动程序

    PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & Server.Mappath("db/dbTest.mdb") 
    

    JET 是 32 位的,所以您需要启用 32 位应用程序

    对于 Access 2007 及以后的版本,请按照您的示例使用 ACE 驱动程序。 ACE 是 64 位的,因此您不需要启用 32 位应用程序,实际上您可能需要禁用它们 - IIS 似乎是/或在这些情况下

    【讨论】:

    • 哦!但该数据库位于 MS Accesss 2007 格式 (.accdb) 中。那么提供者会是什么呢?
    • 我假设您说的是在旧版本的 Access 中创建的数据库。见这里office.microsoft.com/en-gb/access-help/…。如果它确实具有 accdb 扩展名,那么 ACE 就是要使用的驱动程序。 ACE 实际上是一个 64 位驱动程序,因此您应该禁用 32 位应用程序。另外,如果您不知道,JET 驱动程序随 Win 7 Pro 一起提供,但您需要安装 ACE
    • 或者,您可以将数据库的副本保存为旧的 mdb 格式
    • 它适用于 .mdb 数据库。感谢您提供信息。
    猜你喜欢
    • 1970-01-01
    • 2013-09-13
    • 2012-09-03
    • 2011-09-02
    • 2012-02-10
    • 2012-09-16
    • 1970-01-01
    • 2015-01-06
    • 2013-06-22
    相关资源
    最近更新 更多