今天同事詢問有沒有看過以下的錯誤訊息,
<System.Data.OleDb.OleDbException> 從外部資料庫驅動程式產生的非預期的錯誤 (1)。 [ OleDbException.ErrorCode : -2147467259 ]
Unexpected error from external database driver (1). (Microsoft JET Database Engine)
程式只是透過 Provider=Microsoft.Jet.OLEDB.4.0; 去開啟一個 excel 檔而已,而且同事詢問這個問題後,另一位同事也在詢問相同的問題。
1 | var conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\kt\\Documents\\VS Code\\TEST_EXCEL\\aa.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\""); |
但這支程式前陣子用的好好的呀! 為什麼今天卻發生了這樣子的錯誤呢?
於是往 Windows 更新來看,發現有 2 個更新,如下,
查看一下 kb4041681 , 裡面有更動到 Microsoft JET Database Engine 而我們是有用到它呢!!! 於是將它反安裝後重新開機後,再執行程式就沒問題了。
這個更新似乎將 msexcl40.dll 從 V4.00.9801.0 to v4.00.9801.1 , X64 在 C:\Windows\SysWOW64 目錄。
依 “Unexpected error from external database driver (1). (Microsoft JET Database Engine)” after applying October security updates. 的說明,解法有以下 3 個,
1.安裝更新後,調整程式,方式如下,
- 安裝 Microsoft Access Database Engine 2010 可轉散發套件 有分 x86/x64 版本哦!
- 將連線字串從 Provider=Microsoft.Jet.OLEDB.4.0 改成 Provider=Microsoft.ACE.OLEDB.12.0
2.移除相關的 KB
3.使用舊的 msexcl40.dll (v4.00.9801.1 以前的版本)
- 先到可以運作的電腦中 Copy msexcel40.dll 存到某個目錄之中,例如 c:\excel32 。
- 修改註冊機碼 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel\Win32] 從原本的 C:\Windows\SysWOW64\msexcel40.dll 改成 c:\excel32\msexcel40.dll 。
Windows Update 其中的內容如下,
Security updates to Microsoft Windows Search Component, Windows kernel-mode drivers, Microsoft Graphics Component, Internet Explorer, Windows kernel, Windows Wireless Networking, Microsoft JET Database Engine, and the Windows SMB Server.
目前發現有以下幾個 kb 會影響到,
kb4041678 Win 7 / Win 2008
kb4041681 Win 7 / Win 2008
Kb4042007 Win 2008
kb4041691 Win 10 / Win 2016
kb4041676 Win 10
如果有一樣的錯誤訊息,應該是因為 windows update ,請檢查最近的 windows update 哦! 可以的話也讓小弟知道一下下 ^_^
參考資料
Excel Microsoft.Jet.OLEDB.4.0 外部数据库驱动程序中(1)的意外错误
Kb4042007 Microsoft Jet 资料库引擎遠端執行程式碼弱點的安全性更新:2017 年 10 月 10 日
註:在 “Unexpected error from external database driver (1). (Microsoft JET Database Engine)” after applying October security updates. 有貼出 Microsoft 修正的 Update 了哦! 請參考
Windows 7/2008 R2
-Monthly Roll-up - https://support.microsoft.com/en-us/help/4048957/windows-7-update-kb4048957
-Security-only update - https://support.microsoft.com/en-us/help/4048960/windows-7-update-kb4048960
Windows 2012
-Monthly Roll-up - https://support.microsoft.com/en-us/help/4048959/windows-server-2012-update-kb4048959
-Security-only update - https://support.microsoft.com/en-us/help/4048962/windows-server-2012-update-kb4048962
Windows 8.1 and 2012 R2
-Monthly Roll-up - https://support.microsoft.com/en-us/help/4048958/windows-81-update-kb4048958
-Security-only update - https://support.microsoft.com/en-us/help/4048961/windows-81-update-kb4048961
Windows 10 Fall (“November”) Update, version 1511
-https://support.microsoft.com/en-us/help/4048952
Windows 10 Anniversary Update, version 1607, and Server 2016
-https://support.microsoft.com/en-us/help/4048953
Windows 10 , version 1703
-https://support.microsoft.com/en-us/help/4048954/windows-10-update-kb4048954