1

我有一个连接到 Access 数据库的经典 ASP 站点。最近,它已从 AT&T 网络托管转移到运行 Windows Server 2012 的专用云服务器。当网站点击一行代码查询数据库时,它返回错误:

Microsoft VBScript runtime  error '800a01a8' 

Object required 

/menu.asp, line 145 

连接发生在不同的文件中,如下所示:

<%
Set Conn = Server.CreateObject("Adodb.Connection")
Dim conStr
Conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/data/CNCmachinery.mdb")
%>

引发错误的行是:

Set RP=Conn.Execute(msql) 'msql contains a basic query

同样,该站点在迁移到新服务器之前正在运行,所以我想知道这是否是兼容性问题?我应该关注什么?

4

2 回答 2

0

您的旧服务器是 32 位还是 64 位机器?Windows server 2012 仅在 64 位机器上运行,并且没有 Microsoft.Jet.OLEDB.4.0 的 64 位版本。

由于连接字符串中的提供程序,似乎 ASP 应用程序无法创建对象 Conn:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/data/CNCmachinery.mdb")

如果您的旧服务器是 32 位或 64 位但安装了 32 位版本的 Office,请尝试以下操作:

1) 在您的 windows server 2012 中安装 Office 系统驱动程序:数据连接组件:Office 2007 版本Office 2010 版本(取决于您在 Windows Server 2012 中安装的 Office 版本

2) 将连接字符串更改为如下所示: Conn.Open = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("/data/CNCmachinery.mdb")

于 2013-08-14T01:10:29.177 回答
0

假设您已经从 32 位服务器迁移到 64 位服务器,这很有可能,您可以尝试两件事

首先,通过 IIS 管理器启用 32 位兼容性。(默认禁用)

https://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx

其次,与您的网站关联的 IUSR 帐户是否对您的 mdb 文件具有读/写权限。右键单击文件并选择安全选项卡进行检查

于 2013-08-14T10:17:51.907 回答