[英]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位兼容性。 (默认情况下处于禁用状态)
其次,与您的网站关联的IUSR帐户是否对您的mdb文件具有读/写权限。 右键单击该文件,然后选择“安全性”选项卡以进行检查
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.