簡體   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