ADODB.Connection 錯誤 '800a0e7a'
未找到提供者。該程式可能未正確安裝。
/串連“網站內容管理”資料庫。asp,行 2
原因:IIS是以64位方式來啟動並執行,它只能載入64位模組,不能載入32位模組。而訪問access資料庫的jet引擎只有32位的,沒有64位,因此無法被IIS載入。
解決思路:讓IIS以32位方式運行,從而可以調用32位的jet引擎
解決方案:在命令列視窗輸入
複製代碼 代碼如下:
cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
上面方法的負面效應:因為IIS被改成以32位方式運行,所以它只能載入32位模組。如果改之前,IIS載入了其他64位的模組,則改之後就無法載入這個模組了。如果想繼續使用這個模組的功能,只能尋找這個模組的32位版本並載入。
如果希望IIS重新以64位方式運行,可以輸入
複製代碼 代碼如下:
cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
昨天去幫客戶配置網站,客戶服務器是使用的windows 2003 64bit的系統,我把iis網站配置好後測試時發現程式一直提示運行逾時,因為這個程式在32bit機器上運行沒有問題,懷疑問題出在迴圈處,讓程式在迴圈開始停住,測試可正常運行,輸出選項組rs.bof顯示空白,懷疑jet引擎有問題,將程式的出錯控制語句去掉後程式啟動並執行錯誤描述是未找到提供者,開啟"資料來源(ODBC)",轉到“驅動程式”選項卡一看,發現沒有JET引擎。於是從微軟網站上下載了mdac2.7安裝,安裝後發現問題依舊!
從網上搜尋發現是64位的iis無法相容32的jet引擎,需要讓iis以32為的方式運行,只要在命令列輸入一下命令
cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
之後IIS就會以32位方式來運行了。
運行命令後網站果然可以正常運行了
另外:網上還提到如果運行了asp.net模組當iis以32為方式運行時也必須載入32的asp.net擴充,否則iis無法正常運行,因為64位的IIS無法載入32位的ASP.Net模組,32位的IIS也無法載入64位的ASP.Net模組.