Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

IIS 7/7.5/8/10 64 位元系統 ASP.NET 連接 Access (MDB) 報錯「未註冊 microsoft.jet.oledb.4.0」解決方案

編輯:關於伺服器

將 ASP.NET 應用從 32 位元 Windows Server 2003 (IIS 6) 遷移至 64 位元 Windows Server 2008/2012/2016/2019 (IIS 7+) 時,連接 Access .mdb 資料庫報錯:

「未在本機電腦上註冊 'microsoft.jet.oledb.4.0' 提供者。」

原因:**Jet OLEDB 4.0 無 64 位元版本**,64 位元進程無法載入 32 位元 COM 元件。解決方案:**改用 Microsoft ACE OLEDB 12.0/16.0 (支援 64 位元) 驅動程式**,並修改連接字串。

解決方案:更換連接字串驅動程式

原連接字串 (32 位元 Jet):

string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data/db.mdb");

新連接字串 (64 位元 ACE):

string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("App_Data/db.mdb");

只需將 Provider 從 Microsoft.Jet.OLEDB.4.0 改為 Microsoft.ACE.OLEDB.12.0**,其餘參數保持不變。

前置條件:安裝 Microsoft Access Database Engine

伺服器必須安裝對應位元的 ACE 驅動:

  • 64 位元系統 (IIS 應用程式池啟用 32 位元 = false): 安裝 64 位元 Microsoft Access Database Engine 2010 (ACE 12.0) 或 2016 (ACE 16.0)
  • 下載連結:
版本下載支援格式
ACE 12.0 (2010)AccessDatabaseEngine_X64.exe.mdb, .accdb, .xls, .xlsx
ACE 16.0 (2016)AccessDatabaseEngine_X64.exe.mdb, .accdb, .xls, .xlsx, .csv

安裝注意: 若系統已安裝 32 位元 Office/ACE,**無法直接安裝 64 位元版** (會報錯)。解決:移除所有 32 位元 Office/ACE 元件,或**啟用應用程式池「啟用 32 位元應用程式 = True」並繼續用 Jet 4.0** (見下文替代方案)。

替代方案:應用程式池啟用 32 位元模式 (不更換驅動、不裝 ACE 64 位)

  1. IIS 管理員 → 應用程式池 → 選取該站點應用程式池 → 右鍵「進階設定」
  2. 啟用 32 位元應用程式 = True
  3. 重啟應用程式池
  4. 原連接字串 Provider=Microsoft.Jet.OLEDB.4.0 即可正常運作

優點: 零代碼修改、無需安裝 ACE 64 位、相容舊版 Jet。
缺點: 32 位元進程虛擬記憶體限制 4GB、效能較 64 位元略低、無法使用 64 位元原生元件。

驗證步驟

  1. 建立測試頁面 test_access.aspx,輸出連接測試結果。
  2. 確認無「提供者未註冊」錯誤,能正常查詢/寫入資料。
  3. 檢查應用程式池進程位元:工作管理員 → 詳細資料 → w3wp.exe → 平台 (32 位元 / 64 位元)。

常見坑點

現象原因解決
安裝 ACE 64 位報錯「已安裝 32 位元 Office」同機器不支援混裝 32/64 位 Office 元件移除 32 位 Office/ACE、或改用應用程式池 32 位模式
連接字串改 ACE 仍報錯ACE 未安裝、或安裝版本不匹配 (12.0 vs 16.0)確認安裝 reg query HKLM\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine
網路路徑 (UNC) 連接失敗Jet/ACE 不支援 UNC 路徑直接開啟複製到本機、或用映射磁碟機代號
並發寫入鎖定/損壞Access 非伺服器級資料庫,不適合高並發寫入遷移至 SQL Server / SQLite / PostgreSQL

64 位元 IIS 連 Access,**核心矛盾在於 Jet 4.0 無 64 位版本**。標準解法:**安裝 ACE 12.0/16.0 64 位 + 修改 Provider 字串**;快速相容法:**應用程式池啟用 32 位模式 + 維持 Jet 4.0**。長遠規劃:**遷移至 SQL Server / PostgreSQL / SQLite** 等正規資料庫引擎,徹底擺脫 Access 限制。

Copyright © Windows教程網 All Rights Reserved