Unexpected error from external database driver (1)


         使用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

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

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

                   


免責聲明!

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



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