Microsoft.ACE.OLEDB.12.0 usługodawca nie jest zarejestrowany

Mam rozwiązanie Visual Studio 2008 z dwoma projektami (projekt Word-Template i VB.Net aplikacja konsolowa do testowania). Oba projekty odwołują się do projektu bazy danych, który otwiera połączenie z plikiem bazy danych MS-Access 2007 i ma odniesienia do systemu.Data.OleDb. W projekcie bazy danych mam funkcję, która pobiera tabelę danych w następujący sposób

 private class AdminDatabase
   ' stores the connection string which is set in the New() method
   dim strAdminConnection as string

   public sub New()
   ...
   adminName = dlgopen.FileName
   conAdminDB = New OleDbConnection
   conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
       "Provider=Microsoft.ACE.OLEDB.12.0"

   ' store the connection string in strAdminConnection
   strAdminConnection = conAdminDB.ConnectionString.ToString()
   My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
   ...
   End Sub

   ' retrieves data from the database
   Public Function getDataTable(ByVal sqlStatement As String) As DataTable
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter
        Dim localCon As New OleDbConnection


        localCon.ConnectionString = strAdminConnection

        Using localCon
            Dim command As OleDbCommand = localCon.CreateCommand()
            command.CommandText = sqlStatement
            localCon.Open()
            da.SelectCommand = command
            da.Fill(dt)
            getDataTable = dt
        End Using

    End Function
End Class

Kiedy wywołuję tę funkcję z mojego projektu szablonu Word 2007 wszystko działa dobrze; bez błędów. Ale kiedy go uruchamiam z aplikacji konsolowej wyrzuca następujący wyjątek

Ex = {"Microsoft.ACE.OLEDB.12.0' usługodawca nie jest zarejestrowany na lokalna maszyna."}

Oba projekty mają to samo odniesienie i aplikacja konsolowa działała, kiedy ją pisałem (jakiś czas temu), ale teraz przestała działać. Muszę coś przeoczyć, ale nie wiem co. Jakieś pomysły?

Author: Azim, 2008-10-27

9 answers

Mam program visual Basic z Visual Studio 2008, który korzysta z bazy danych Access 2007 i otrzymywał ten sam błąd. Znalazłem kilka wątków, które zalecały zmianę zaawansowanej konfiguracji kompilacji na x86 znalezioną we właściwościach programów, jeśli używasz systemu 64-bitowego. Do tej pory nie miałem żadnych problemów z moim programem.

 42
Author: Eric Andres,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-04 15:54:45

Zasadniczo, jeśli korzystasz z komputera 64-bitowego, IIS 7 nie obsługuje (domyślnie) aplikacji 32-bitowych, na których działa silnik bazy danych. Więc tutaj jest dokładnie to, co robisz:

1) Upewnij się, że silnik bazy danych 2007 jest zainstalowany, można go pobrać na: http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2) Otwórz Menedżera IIS7 i otwórz obszar pul aplikacji. Na prawym pasku bocznym zobaczysz opcję, która mówi "Ustaw domyślne ustawienia puli aplikacji". Kliknij go,a pojawi się okno z opcjami.

3) drugie pole w dół, które mówi 'Enable 32-bit applications' jest prawdopodobnie domyślnie ustawione na FALSE. Po prostu kliknij tam, gdzie jest napisane "false", aby zmienić go na "true".

4) Uruchom ponownie pulę aplikacji(możesz to zrobić, naciskając RECYCLE zamiast STOP, a następnie START, co również zadziała).

5) zrobione, a Komunikat o błędzie zniknie.

 52
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-11 21:06:09

Czy używasz systemu 64-bitowego z bazą danych działającą 32-bitowo, ale konsola działa 64-bitowo? Nie ma sterowników MS Access, które działają 64-bitowo i zgłaszałyby błąd identyczny z tym, który zgłaszałeś.

 7
Author: Joel Lucsy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-26 22:19:58

Rozwiązanie:

To jest to! Dzięki Arjun Paudel za link. Oto rozwiązanie znalezione na XNA Creator ' s Club Online. Autor: Szczepan Styrczak

Następujący błąd sugeruje mi wierzyć, że kompilujesz dla 64bit:

" Microsoft .ACE.OELDB.12.0 ' dostawca nie jest zarejestrowany na maszynie lokalnej

Nie mam express edition, ale są następujące kroki ważne w 2008 express?

Http://forums.xna.com/forums/t/4377.aspx#22601

Http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?prof=required
- Arjun Paudel


W VC# Express tej właściwości nie ma, ale nadal możesz utworzyć konfigurację x86, jeśli wiesz, gdzie szukać.

Wygląda to na długą listę kroków, ale gdy już wiesz, gdzie są te rzeczy, jest o wiele łatwiej. Każdy, kto tylko has VC# Express prawdopodobnie uzna to za przydatne. Kiedy dowiesz się o Configuration Manager, następnym razem będzie to o wiele bardziej intuicyjne.

1.In VC # Express 2005, przejdź do Tools -> Options.
2.In w lewym dolnym rogu okna dialogowego Opcje zaznacz pole z napisem "Show all settings".
3.In widok drzewa po lewej stronie wybierz "Projects and Solutions".
4.In opcje po prawej stronie zaznacz pole z napisem, "Show advanced build configuraions."
5.Kliknij OK.
6.Przejdź do Build -> Configuration Manager...
7.In w kolumnie Platforma obok Twojego projektu kliknij combobox i wybierz "<New...>".
8.In "New platform" setting, choose "x86".
9.Kliknij OK.
10.Kliknij Close.
Teraz masz konfigurację x86! Łatwizna! :-)

Zalecam również użycie Configuration Manager do usunięcia dowolnej platformy procesora. Naprawdę nie chcesz tego, jeśli kiedykolwiek miałeś depedencies na 32-bitowych natywnych bibliotekach DLL (nawet pośrednich zależnościach).

Stephen Styrchak / programista XNA Game Studio http://forums.xna.com/forums/p/4377/22601.aspx#22601


 5
Author: Pescadore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-20 12:09:22

Pomyślałem, że się odezwę, bo znalazłem to pytanie w nieco innym kontekście problemu i pomyślałem, że może w przyszłości pomóc innym udręczonym duszom:

Miałem ASP.NET aplikacja hostowana na IIS 7.0 z systemem Windows Server 2008 64-bit.

Ponieważ IIS kontroluje bitowość procesu, rozwiązaniem w moim przypadku było ustawienie enable32bitapponwin64 na prawda: http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you-can-now-run-32-bit-and-64-bit-applications-on-the-same-server.aspx{[6]

To działa nieco inaczej w IIS 6.0 (nie można ustawić Enable32bitAppOnWin64 na poziomie puli aplikacji) http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx?mfr=true

 3
Author: Veli Gebrev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-29 12:36:57

Mam ten sam problem. Próbuję zainstalować pakiet office 2010 64Bit na windows 7 64 bit, a następnie zainstalować sterownik systemu Office 2007: Komponenty łączności danych.

Następnie visual studio 2008 może otworzyć połączenie z plikiem bazy danych MS-Access 2007.

 2
Author: xdxavier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-04 14:38:22

Zobacz mój post w podobnym wątku Stack Exchange https://stackoverflow.com/a/21455677/1368849

Miałem zainstalowaną wersję 15, a nie 12, o czym dowiedziałem się uruchamiając ten kod PowerShell...

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION

...co dało mi ten wynik(usunąłem inne źródła danych dla zwięzłości)...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider
 2
Author: TechSpud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:33:23

Mam ten sam błąd na w pełni zaktualizowanym systemie Windows Vista 64bit z aplikacją. NET, którą skompilowałem tylko do 32 bitów - program jest zainstalowany w folderze programx86 na maszynach 64 bitowych. Nie powiedzie się z tym Komunikatem o błędzie nawet z zainstalowanym dostawcą bazy danych access 2007, z / wiathout SP2 tego samego zainstalowanego, zainstalowanym IIS i zestawem app pool dla obsługi aplikacji 32-bitowych... tak, próbowałem wszystkich rozwiązań wszędzie i nadal bez sukcesu.

Zmieniłem aplikację na ACE OLE DB.12.0 bo jet4.0 zawodził na maszynach 64bit - i nie jest lepiej: - / najbardziej obiecujący wątek jaki znalazłem to:

Http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/{[6]

Ale kiedy próbujesz zainstalować 64-bitowy "2010 Office System Driver Beta: Komponenty łączności danych", mówi ci, że nie możesz zainstalować wersji 64-bitowej bez odinstalowania wszystkich 32-bitowych aplikacji biurowych... i instalacja wersji 32 bitowej 2010 Office System Driver Beta: składniki łączności danych nie rozwiązuje początkowego problemu, nawet z " Microsoft.ACE.OLEDB.12.0 "jako dostawca zamiast" Microsoft.ACE.OLEDB.14.0", które ta strona (i inni) polecają.

Moją kolejną próbą będzie podążanie za tym postem:

Problem wynika z niewłaściwego smaku OLEDB32.DLL i OLEDB32r.DLL rejestracja na serwerze. Jeśli wersje 64-bitowe są zarejestrowane, muszą być niezarejestrowane, a następnie wersje 32-bitowe zarejestrowany zamiast. Aby to naprawić, Wyrejestruj wersje znajdujące się w %Program Files% / Common Files / System / OLE DB. Następnie zarejestruj wersje na tej samej ścieżce, ale w katalogu %Program Files (x86)%.

Czy ktoś jeszcze miał tyle problemów z dostawcami JET4. 0 i OLEDB ACE na maszynach 64 bitowych? Czy ktoś znalazł rozwiązanie, jeśli żaden z pozostałych nie działa?

 1
Author: jazzwhistle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 10:18:07

Zakładam, że jeśli używasz 64-bitowego systemu z 32-bitową bazą danych i próbujesz uruchomić 64-bitową konsolę, następujące pakiety muszą być zainstalowane na komputerze.

  1. Zainstaluj silnik bazy danych Microsoft Access 2010 x86 Redistributable, ta instalacja jest dostępna na: http://www.microsoft.com/download/en/details.aspx?id=13255 .
  2. Komponenty łączności danych pakietu Office 2007, ta instalacja jest dostępne na: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .
  3. Microsoft Access Database Engine 2010 x64 Redistributable. Będziesz trzeba pobrać pakiet lokalnie i uruchomić go z pasywną flagą. Możesz pobrać instalację tutaj: http://www.microsoft.com/en-us/download/details.aspx?id=13255 Instalacja przy użyciu wiersza polecenia z flagą '/ passive'. W wiersz polecenia uruchom następujące polecenie: "AccessDatabaseEngine_x64.exe / passive "

Uwaga: kolejność wydaje się mieć znaczenie - więc jeśli masz już coś zainstalowanego, odinstaluj i postępuj zgodnie z powyższymi krokami.

 1
Author: Merav Kochavi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 15:23:49