2013-03-21 91 views
1

簡短而親切:「Microsoft.ACE.OLEDB.12.0」供應商未註冊 - 但它是

  • 應用工作的x86計算機上,但不是在x64(試過2008 Server和一個Windows 8)
  • Microsoft Access數據庫引擎2010已經安裝(也安裝了Microsoft Office 2007 Access數據庫引擎)
  • 的MS Office沒有安裝
  • 證實C的存在:\程序文件(x86)\ Common Files文件\微軟共享\ OFFICE12 \ ACEOLEDB.DLL

代碼:

string conn = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;"; 
OleDbConnection _connOle = new OleDbConnection(conn); 

任何想法我應該做的就是這個程序在x64計算機工作?謝謝!

+0

您是否安裝了32位2007和64位2010?因爲那是你需要的。 – Fionnuala 2013-03-21 12:09:06

+0

有趣。我意識到我沒有將目標平臺設置爲x86,所以一旦我做到了這一點,錯誤就消失了。但我會記住你的答案。 – Mossi 2013-03-21 16:46:44

回答

3

我能想到的兩種情況可以解釋您的問題:

  1. C#項目設置同時針對64位和32位平臺和64位機僅具有32安裝了Access數據庫引擎的二位版本。 \ Program Files文件\ Common Files文件\ Microsoft共享\ OFFICE14 \ ACEOLEDB.DLL

  2. C#項目設定目標:因爲程序運行64位,但該機缺少

    下的參考失敗只有32位平臺(x86)和64位機器僅安裝了64位版本的Access數據庫引擎。因爲程序運行32位,但該機缺少

    下的參考失敗:\程序文件(x86)\ Common Files文件\微軟共享\ OFFICE14 \ ACEOLEDB.DLL

注意安裝程序的64位版本的Access數據庫引擎安裝只是的64位版本,而不是兩個。

+0

謝謝。問題解決了! – Mossi 2013-03-21 16:43:49

0

雖然這個問題已經得到解答,但在問題上花了很多時間之後,這些東西對我來說是固定的。

我使用Process Monitor來查找正在查找的註冊表項。 這是HKEY_CLASSES_ROOT\Microsoft.ACE.OLEBD.12.0

在我的情況下,儘管在程序和功能中列出了「Microsoft Access數據庫引擎2010」,但這個鍵仍然丟失。

另外文件ACEOLEDB.DLL已經存在於C:\Program Files\Common Files\Microsoft Shared\OFFICE14\

重新安裝「Microsoft Access數據庫引擎2010可再發行」退出而不顯示任何錯誤,但Windows事件日誌提到的問題,並期待在安裝日誌文件,似乎有一些版本不匹配(「這樣做的另一個版本產品已安裝「)。
因此,我從「程序和功能」中卸載了「Microsoft Access數據庫引擎2010」,然後重新安裝它。現在它安裝好了。
這導致添加了註冊表項HKEY_CLASSES_ROOT\Microsoft.ACE.OLEBD.12.0,並且ACEOLDBD.DLL的副本被替換爲較早版本(14.0.7159.5000中的14.0.7011.1000)。

相關問題