簡體   English   中英

將數據導出到 MS ACCESS 時,“Microsoft.ACE.OLEDB.12.0”提供程序未在本地計算機上注冊

[英]The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine while data export to MS ACCESS

我是使用 Microsft.ACE.OLEDB 12.0 的初學者。 我創建了一個 Winforms 應用程序 VS 2010。

並創建將數據網格數據導出到 MS Access 文件的功能。 我使用 Microsoft Oledb

用於將數據網格數據導出到 MS Access 文件。但是當我嘗試導出時出現此錯誤

數據到ms訪問。

請看下圖。

在此處輸入圖片說明

我還在我的應用程序中引用了Microsoft.Office 12.0 對象庫

在此處輸入圖片說明

批量構建配置

在此處輸入圖片說明

Access Interop位的引用與您的異常無關,訪問互操作不需要使用System.Data.OleDb的類。

當您為AnyCPU Platform編譯您的應用程序,您在 64 位系統上運行並且安裝的 ADO.NET 提供程序 (Microsoft ACE.OLEDB.12.0) 是 32 位版本時,就會出現問題。

使用AnyCpu目標平台時,您的代碼將在 64 位系統上作為 64 位代碼執行,在 32 位系統上作為 32 位代碼執行。 作為 64 位執行的應用程序不能使用 32 位驅動程序(反之亦然)。 現在添加一個事實,即 Microsoft.ACE.OLEDB.12.0 有兩個不同的版本。 一個用於 64 位,一個用於 32 位,它們不能一起安裝在同一台機器上。

最簡單的解決方法是通過 Visual Studio 菜單更改應用程序的目標平台

 BUILD -> Configuration Manager -> Active Solution Platform -> x86

如果x86選項尚不存在,則選擇 NEW,將其命名為x86Copy Settings from AnyCPU並選中Create new project platforms

如果您認為在 64 位操作系統上使用 32 位應用程序會導致性能損失或需要避免的事情,那么請三思並閱讀此參考資料,其中對 AnyCpu 的優點和缺點進行了嚴格檢查。 如果您沒有使用AnyCpu的特定原因,最好繼續使用x86

當然,另一種選擇是卸載 32 位版本並 從此處安裝 64 位版本的 ACE,然后在 64 位系統上將應用程序作為 AnyCpu 運行。 但這對於您的部署場景來說可能是一場噩夢。 如果您的 x64 目標機器上安裝了 Microsoft Office 32 位版本怎么辦? Office 安裝了它的位兼容版本的 ACE,並且如上所述,不可能在同一台機器上安裝 32 位和 64 位的 ACE。
現在,您還應該要求您的客戶將 Office 重新安裝為 64 位,以使您的 64 位應用程序滿意。

更新


使用最新版本的 Visual Studio,情況有所改變。 現在有一個新選項是新項目的默認選項。 它被稱為AnyCPU Prefer 32bit 模式 此鏈接中的更多詳細信息: AnyCPU 的真正含義作為 .NET 4.5 和 Visual Studio 11以及另一篇有趣的文章(盡管是關於 Sql Server Compact)是這個任何 CPU 的問題–首選 32 位–BadImageFormatException

更改其應用程序池“高級設置”以允許運行 32 位程序......這對我來說是這樣做的。

當我們閱讀 Excel 文件時,我遇到了類似的問題。

問題歷史:

由於內存要求,我們最近將應用程序從 32 位遷移到 64 位。 為此,我們將 Windows 7 從 32 位遷移到 64 位。 但是我們仍然在我們的機器上安裝了 32 位 Office。

因為,因此我們在將 Excel 數據導入應用程序時遇到了這個問題。

解決方案,

我下載了http://www.microsoft.com/en-us/download/details.aspx?id=13255 的64 位版本並使用參數安裝,

AccessDatabaseEngine_x64.exe /passive

沒有任何代碼更改我的問題得到解決。

筆記:

在 64 位操作系統和 64 位辦公室上,我的功能在沒有此修復程序的情況下運行良好。 僅當我們的應用程序在 64 位操作系統上運行 64 位時才需要此修復,該操作系統上安裝了 32 位辦公室。

基本方式:

應用程序: MVC C# ,對於 Win Server 64 位:

  1. 刪除所有安裝的 office 32 位。

  2. 下載鏈接: https : //www.microsoft.com/en-us/download/details.aspx?id=13255

  3. 選擇下載64位然后安裝到服務器(如果你不能安裝程序,請重新檢查1點)。

  4. 重試再次訪問您的應用程序。 在此處輸入圖片說明

對我來說,安裝 Microsoft Access Database Engine 2010 Redistributable 解決了 32 位版本的問題。

就我而言

  1. 下載鏈接: https : //www.microsoft.com/en-us/download/details.aspx?id=13255
  2. 選擇下載 32 位,然后將其安裝到服務器(即使您的服務器是 64 位)
  3. 如果您無法安裝程序,請卸載 64 位版本。
  4. 重新嘗試訪問您的應用程序
  5. 如果您仍然有錯誤(在 IIS 中為您的應用程序設置啟用 32 位應用程序為 True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM