繁体   English   中英

将经典ASP站点移至新服务器,现在在Conn.Execute中返回“ VBScript运行时错误'800a01a8'对象必需”

[英]Moved a Classic ASP site to a new server, now “VBScript runtime error '800a01a8' Object required” returned on Conn.Execute

我有一个经典的ASP网站连接到Access数据库。 最近,它已从AT&T虚拟主机移至运行Windows Server 2012的专用Cloud Server。当站点命中一行代码以查询数据库时,它将返回错误:

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

同样,此站点在移至新服务器之前仍在运行,因此我想知道这是否是兼容性问题? 我应该看什么?

您的旧服务器是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 System驱动程序:数据连接组件: Office 2007版本Office 2010版本 (取决于Windows Server 2012中安装的Office版本)

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

假设您已经很可能从32位服务器迁移到64位服务器,则可以尝试两种方法

首先,通过IIS管理器启用32位兼容性。 (默认情况下处于禁用状态)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM