The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.


Excel Microsoft.Jet.OLEDB.4.0 外部數據庫驅動程序中(1)的意外錯誤

昨天更新系統的bug,據說是微軟要搞事情啊

  刪除以下更新就行:
  win7                          KB4041678  KB4041681
  SERVER 2008 R2 KB4041678  KB4041681
  WIN10                      KB4041676  KB4041691
  SERVER 2016       KB4041691

使用C#開發的Web系統,其中有項功能,上傳Excel報表,從Excel里讀取數據,導入到數據庫中。

         從10月底開始,使用者反應無法正常使用,報如下錯誤信息:

         Unexpected error from external database driver (1)

          經查,所有的批量導入都出現這個錯誤,不能導入,因此判斷為是服務器上系統環境發生了改變。

          網上查詢,是由於10月10日微軟發布了新的補丁程序,打了此補丁以后,會影響到讀取Excel的引擎。

          程序中如果是使用“Provider=Microsoft.Jet.OLEDB.4.0“,則會受影響。

          解決辦法:

          1、卸載此補丁程序

               我從控制面板--->刪除程序,未找到此補丁程序。

           2、使用新的引擎

               程序改為”Provider=Microsoft.ACE.OLEDB.12.0“  

              經如此修改后,我有兩個系統,分別部署在A、B服務器上。

              1)、A服務器,系統環境Win 2008 R2 64bit English,Office 2010 32bit

                    在此服務器上,程序更新上去以后,批量導入恢復正常。

              2)、B服務器,系統環境Win 2008 R2 64bit English,Office 2010 64bit

                   在此服務器上,程序更新上去以后 ,批量導入仍然不能使用。報如下錯誤信息:

                  The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. 

                  檢查IIS,應用程序池里已經啟用了32位程序的使用。

                  依照網上查詢的下載了新的引擎AccessDatabaseEngine.exe,這個是適用於32位的,又下載了AccessDatabaseEngine_X64.exe(適用於64位)的。

                  安裝AccessDatabaseEngine.exe,提示服務器上當前安裝的是64位的Office,不能安裝此引擎。

                  安裝AccessDatabaseEngine_X64.exe,可以正常安裝,但使用批量導入,仍然報錯。

                  報錯誤信息:The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. 

                  考慮到Web程序是在32位的開發環境下開發的,應該使用32位的引擎。

                  經網上查詢,采用下面方法安裝適用於32位的AccessDatabaseEngine.exe,增加參數 /passive,可以繞開檢查服務器上當前是64位Office 的檢查

                  運行--->CMD,進入Dos命令行,進入AccessDatabaseEngine.exe所在文件夾,如下:

                 C:\xxx\AccessDatabaseEngine.exe  /passive

                  安裝成功后,批量導入作業恢復正常

                  在控制面板里,查看,安裝后呈現下面情況:

解決方案:
1、網上的方案是:在控制面板>程序>程序和功能>已安裝更新中,找到對應的兩個補丁,進行卸載。不同系統對應不同的補丁,具體可以參考: http://www.cnblogs.com/net-god/p/7661313.html
2、微軟給出的解決方案是:下載新的驅動引擎( Microsoft Access Database Engine 2010 Redistributable),更改Provider=Microsoft.Jet.OLEDB.4.0為Provider=Microsoft.ACE.OLEDB.12.0。
 
參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM