2014-10-30 155 views
0

系统信息:
Windows Professional。 64位。
IIS 7.0
Office 2007 32位(来自任务管理器)
否Visual Studio。
运行经典ASPWindows 7(64位)上的IIS 7和Ms Access 32位32位

需要连接到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
启用32位应用程序IIS
CSCRIPT%SYSTEMDRIVE%\的Inetpub \ adminscripts \ adsutil.vbs设置SVC/AppPools/Enable32bitAppOnWin64 1
使用以下选项来手动选择.ACCDB(它是正确的方法?) %WINDIR %\ Syswow64资料\ odbcad32.exe的

回答

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似乎是/或在这些情况下

+0

哦!但数据库是在MS Accesss 2007 fomrat(.accdb)中。那么供应商会是什么? – msinfo 2014-10-31 06:53:26

+0

我假设你正在谈论在旧版Access中创建的数据库。请参阅http://office.microsoft.com/en-gb/access-help/convert-a-database-to-the-accdb-file-format-HA010341552.aspx。如果它具有accdb扩展名,则ACE是要使用的驱动程序。 ACE实际上是一个64位驱动程序,所以你应该禁用32位应用程序。此外,如果您不知道,JET驱动程序附带Win 7 Pro,但您需要安装ACE – John 2014-10-31 11:42:44

+0

或者,您可以使用旧的mdb格式保存数据库副本 – John 2014-10-31 11:48:36

相关问题