今天將一箇客戶的asp網站從舊的windows Server 2003+iis6轉移 到Windows Server 2012 R2 iis 8.5 遇到不少問題
Microsoft OLE DB Provider for ODBC Drivers 錯誤 "80004005"
[Microsoft][ODBC 驅動程序管理器] 未髮現數據源名稱併且未指定默認驅動程序
/gard.asp,行 7
1.首先是默認文檔第一箇是 html, 將.asp 提到前麵卽可
2.網站數據庫目録和有些上傳目録沒有權限,在Windows設置 Iisuser匿名用戶有相關權限卽可
數據庫所在目録沒有設置讀寫權限,一般要給來賓帳號權限。
3.打開 index.asp 首頁,還是提示齣錯
錯誤號爲 500 ,您查找的資源存在問題,因而無法顯示
創建一箇新的asp文件,裡麵隻有一句代碼 <% response.write "OK" %>
執行正常,説明ASP正常
5.再打開IIS中此網站中asp的設置中的 以下圖的3項設置爲True (記得 調試好後一定要關閉牠,以免被黑客利用)
併啟用父路徑(默認是開的)
6. 打開index.asp 還是提示500錯誤,沒有詳細的錯誤信息
7. 再打開 錯誤頁
找到 500 這箇錯誤
將 錯誤響應 改爲 詳細錯誤
保存卽可
8. 這時再打開index.asp ,就會顯示 詳細的錯誤信息瞭
提示具體 的inc/conn.asp 的第7行齣錯
conn.connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("..\db\db.mdb")
conn.open()
連接Access數據庫"未髮現數據源名稱併且未指定默認驅動程序"的解決辦法
9. 懷疑是否Access驅動沒有安裝 (可能32位,也可能64位)
64位Windows繫統連接Access數據庫,程序中可能需要修改Access數據庫連接:
32位:strConn="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("inc/db.asp")
64位:strConn="DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & Server.MapPath("inc/db.asp")
修改後仍報錯則進入“控製麵闆”-》“管理工具”-》“數據源(ODBC)”查看繫統是否存在Access驅動
若不存在則需要安裝Microsoft Access驅動程序(下載微軟的驅動重新安裝一下:)
官方:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255
32位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine.exe
64位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine_X64.exe
10.髮現還不行,後來髮現原來是
64位操作繫統不支持Microsoft OLE DB Provider for Jet驅動程序,也不支持更早的Microsoft Access Driver (*.mdb)方式連接。
所以,程序裡麵的鏈接字符串不能正常工作。需要修改下IIS的工作環境,改成32位的,在IIS的管理界麵中。
問題原因:
64位操作繫統不支持Microsoft OLE DB Provider for Jet驅動程序,也不支持更早的Microsoft Access Driver (*.mdb)方式連接。
所以,程序裡麵的鏈接字符串不能正常工作。需要修改下IIS的工作環境,改成32位的,在IIS的管理界麵中。
解決方法:
進入應用程序池中的默認應用程序池 在常規選項中的32位方式啟用就可以瞭:
開啟32位應用程序池設爲True卽可
到此完全解決瞭
2017/03/29 補充
如果 是使用 護衛神主機繫統,在網站管理後颱,還要勾選上 啟動32位應用程序池,否則護衛神的配置會覆蓋IIS的配置