Microsoft.Jet.OLEDB.4.0 " dostawca nie jest zarejestrowany na maszynie lokalnej

Stworzyłem aplikację windows opracowaną w. NET 3.5 na 32 bitowym serwerze Windows 2008. Po wdrożeniu aplikacji na serwerze 64-bitowym wyświetla się błąd " Microsoft.Jet.OLEDB.4.0 "dostawca nie jest zarejestrowany na maszynie lokalnej".

Jako rozwiązanie tego problemu, zmieniłem właściwość build projektu na X86, tak, że będzie on budowany w trybie 32 bitowym, i przebudować projekt na maszynie 32-bitowej. Ale ten sam projekt używa innych sterowników DB (DB2, SQL itd.) do łączenia się z innymi bazami danych. Więc kiedy wdrożyłem moją aplikację ponownie w 64-bitowym systemie operacyjnym, rzuca wyjątek " próba załadowania 64-bitowego zespołu na platformie 32-bitowej. "

Używam Microsoftu.Jet.OLEDB.4.0 sterownik do odczytu i zapisu do Excela (.xls)

Author: skolima, 2010-01-02

21 answers

Znalazłem rozwiązanie tego problemu. Problem, który opisałem w moim pytaniu, wystąpił w zasadzie z powodu niekompatybilności Microsoftu.Jet.OLEDB.Sterownik 4.0 W 64-bitowym systemie operacyjnym.

Więc jeśli korzystamy z Microsoftu.Jet.OLEDB.Sterownik 4.0 W 64-bitowym serwerze musimy zmusić naszą aplikację do wbudowania w tryb 32-bitowy (taką odpowiedź znalazłem, gdy Szukałem tego znanego problemu) i to powoduje, że inna część mojego kodu pęka.

Na szczęście teraz Microsoft udostępnił 64-bitowy kompatybilny 2010 sterownik systemu Office które mogą być używane jako zamiennik dla tradycyjnego Microsoft.Jet.OLEDB.Kierowca 4.0. Działa zarówno na serwerach 32-bitowych, jak i 64-bitowych. Użyłem go do manipulacji plikami Excela i działał dobrze dla mnie w obu środowiskach. ale ten sterownik jest w BETA .

Możesz pobrać ten sterownik z Microsoft Access Database Engine 2010 Redistributable

 249
Author: neo,
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-03-06 18:13:07

Jeśli problem utrzymuje się w ASP.NET wszystko, co musiałem zrobić, to zmienić ustawienie" Włącz aplikacje 32-bitowe " na True, w zaawansowanych ustawieniach puli aplikacji.

 120
Author: Jason Wicker,
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-10-17 08:53:19

Mam ten sam problem

Microsoft.Jet.OLEDB.4.0 " dostawca nie jest zarejestrowany na lokalnym maszyna

Odpowiedź zastosowałem przez neo ale nie zadziałało dopóki nie zmienię providera na "Provider=Microsoft.ACE.OLEDB.12.0; " {[8] } in connection string.

Mam nadzieję, że to pomoże, jeśli ktoś zmierzy się z tym samym problemem.

 58
Author: Iqbal,
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
2015-05-13 02:55:09

Wiem, że to dość stare pytania i wiele osób na nie odpowiedziało. ale streszczam rzeczy do zrozumienia:

Jeśli rozszerzenie pliku to xls, a system operacyjny to 32 bit, to tylko Ty możesz użyć "Microsoft.Jet.OLEDB.4.0". Microsoft nie wydał 64-bitowej wersji tego sterownika.

Jeśli rozszerzenie pliku to xlsx lub system operacyjny to 64 bit, musisz użyć "Microsoft.ACE.OLEDB.12.0". Aplikacja skompilowana w trybie 32/64 bitowym nie ma wpływu na wybór sterownika.

Zawsze instaluj 64-bitowy sterownik Microsoft.ACE.OLEDB.12.0 na OS 64 bit. Jeśli masz już zainstalowany Office 32 bit, musisz uruchomić sterownik z cmd z argumentem / passive. Ten hack działa tylko do Office 2013, Microsoft zatrzymał to obejście z Office 2016 dla Microsoft.ACE.OLEDB.16.0 sterowniki.

AccessDatabaseEngine_x64.exe /passive

Pobierz sterowniki Microsoft.ACE.OLEDB.12.0

private void ProcessFile(string path)
{
    string connString = string.Empty;

    if (Path.GetExtension(path).ToLower().Trim() == ".xls" && Environment.Is64BitOperatingSystem == false)
        connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
    else
        connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}

Jeśli aplikacja jest skompilowana z flagą AnyCPU, będzie szukać 64-bitowych sterowników dostępu na 64-bitowym systemie operacyjnym i 32-bitowych sterownikach dostępu na 32-bitowym systemie operacyjnym.

 33
Author: Romil Kumar Jain,
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
2018-07-25 06:52:05

Jeśli Twoja aplikacja działa na localIIS, możesz rozwiązać ten problem poprzez włączenie aplikacji 32-bitowych w ustawieniach zaawansowanych aplikacji

Tutaj wpisz opis obrazka

 21
Author: Mumin Ka,
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-12-08 11:30:38

Mam taką samą wiadomość, mam stronę z do na visual studio 2010, czytałem plik.xls na tej stronie, w moim projekcie visual nie ma żadnego problemu, gdy umieszczę go na moim IIS local rzuć Mi 'Microsoft.Jet.OLEDB.4.0 "dostawca nie jest zarejestrowany na maszynie lokalnej" , I fixed that problem next following this steps,

1.- Open IIS
2.- Zmień appPool na Advanced Settings
3.- true to enable to 32-bit application.

i to jest wszystkie

Ps.Zmieniłem Configuration Manager na X86 na platformie Active Solution]}

 20
Author: leo,
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-06-06 22:57:52

Miałem ten sam problem. Zmieniłem konfigurację aplikacji na x86, potem zadziałało!

 8
Author: Kakopappa,
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-02-07 13:43:18

Właśnie zmieniłem właściwość projektu na format x64

Project--->Properties--->Build---> Target Framework - - - > X64

 7
Author: Muhamed Shafeeq,
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-08-09 11:28:00

Natknęliśmy się na ten problem w aplikacji komputerowej.

Środowisko Dev: Windows 7 Ultimate - 64 bit . NET Framework 4.5 Provider=Microsoft.Jet.OLEDB.4.0

Został rozwiązany przez zmianę celu platformy na X86 z dowolnego procesora. Właściwości Projektu > > Build > > Platform Target.

Tutaj wpisz opis obrazka

 6
Author: Techvalens,
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-07-06 14:23:14

Napotkałem ten problem z moją aplikacją desktopową ('Microsoft.Jet.OLEDB.4.0 ' dostawca nie jest zarejestrowany na maszynie lokalnej). Nie miałem opcji budowania jako 32-bitowa aplikacja. Mając nadzieję, że to pomoże innym w tej samej sytuacji.

Zrobiłem co następuje i problem zniknął:

  1. Zainstalowano 64-bitową wersję silnika bazy danych Microsoft Access 2010-08-16 19: 45: 00, Autor: neo

  2. Zmieniłem dostawcę na Microsoft.ACE.OLEDB.12.0

 2
Author: robinhood9,
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-01-14 12:57:54

Chociaż bardziej optymalnym rozwiązaniem jest po prostu rekompilacja, jak sugerowano powyżej, wymaga to dostępu do kodu źródłowego. W moim przypadku, miałem tylko gotowe .exe i musiał użyć tego rozwiązania. Używa CorFlags.exe z. Net SDK do zmiany charakterystyki ładowania aplikacji.

  1. Pobierz. Net Framework SDK (osobiście używałem 3.5, ale używana wersja powinna być na lub powyżej wymaganego. Net dla Twojej aplikacji.
  2. podczas instalacji wystarczy CorLibs.exe, więc po prostu sprawdź narzędzia programistyczne Windows.
  3. po instalacji Znajdź swój CorFlags.exe. Dla mojej instalacji. Net Framework 3.5 SDK, to było w C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin.
  4. otwórz wiersz polecenia i wpisz path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+.
Jesteś skończony! Ustawia to flagi startowe programu tak, aby uruchamiał się on w 32-bitowym trybie WOW64, a zatem może uzyskać dostęp do firmy microsoft.jet.oledb.4.0.
 2
Author: Cullub,
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-07-26 21:13:53

Zmiana ustawień pakietu aplikacji IIS ustawienia zaawansowane.Enable 32 bit application

 1
Author: dpsrikanth,
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-08-04 02:40:55

Po prostu zmień właściwość na swojej maszynie i wszystko się udało: -)

Project--->Properties--->Build---> Target Framework - - - > X64

LUB

Project--->Properties--->Build---> Target Framework - - - > X86

 1
Author: Ajmal,
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
2015-01-10 06:23:51

Zmieniłem łańcuch połączeń z

Var myConnectionString = string.Format ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = {0};Persist Security Info = True;Jet OLEDB: Database Password=;", gisdbPath);

Do tego:

Var myConnectionString = string.Format ("Provider=Microsoft.Jet.OLEDB.4.0; Mode=Share Deny None;Data Source = {0};user id = Admin;password=;", gisdbPath);

To działa dla mnie nigdy nie poprosił o Microsoft.Jet.OLEDB.4.0"

 1
Author: Dilhan RK,
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-03-17 03:31:11

Rzeczywiście nie ma 64 bitowej wersji Jet - i nie ma planów (widocznie), aby ją wyprodukować.

Możesz użyć sterownika ACE 64 bit: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734

  • ale nie mam pojęcia, jak to będzie działać, jeśli musisz wrócić do Jet dla swoich 32-bitowych aplikacji.

Jednak może uda Ci się przełączyć projekt na 32bit w wersji Express (nie próbowałem i nie mam 2008 zainstalowany w dowolnym smaku)

Może nadszedł czas, aby całkowicie zlikwidować bazy danych Access, ugryźć kulę i zamiast tego wybrać SQL server?

 0
Author: Anant Dabhi,
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-04-05 20:45:44

Używam VS2013 dla Winforms, poniższe rozwiązanie działało dla mnie.

 0
Author: A Ghazal,
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-12-25 18:38:36

W starszych wersjach IIS nie znajdziesz Advance Settings więc aby włączyć Enable 32-bit Applications musisz wykonać następujące polecenia:

Cscript %SYSTEMDRIVE % \inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools / Enable32bitAppOnWin64 1

I

%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

Reference: Here

 0
Author: Usman Khalid,
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
2015-01-21 11:23:57

Otrzymywałem ten sam wyjątek podczas uruchamiania "SQL Server 2014 Import and Export Data (64-bit)" W moim systemie Windows 8.1.

Aby naprawić ten problem zrobiłem następujące

Uruchomiłem SQL Server 2014 Import i eksport danych (32-bitowy) zamiast 64-bitowy i działa dla mnie. Nie zmieniłem żadnych ustawień IIS i nie zainstalowałem żadnego dodatkowego oprogramowania.

 0
Author: Banketeshvar Narayan,
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
2015-03-15 14:34:31

Wiem, że mam ten problem w kółko, gdy wdrażam moją aplikację na nowym serwerze, ponieważ używam tego sterownika do łączenia się z plikiem Excel. Oto, co ostatnio robię.

Jest Windows Server 2008 R2, instaluję sterowniki dostępu dla x64 bitowej Maszyny i pozbywam się tej wiadomości, co sprawia, że bardzo się cieszę, że wpadam na inny.

Ten tutaj poniżej działa znakomicie na moim dev machine ale na serwerze daje mi błąd nawet po zainstalowaniu najnowsze sterowniki ODBC, które myślę, że to jest problem, ale tak to rozwiązałem.

private const string OledbProviderString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\OlsonWindows.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";

Zastępuję nowym providerem jak poniżej:

private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xlsx;Extended Properties='Excel 12.0;HDR=YES;';";
Ale kiedy to robię, jest jedna rzecz, którą powinieneś zauważyć. Korzystanie z ... rozszerzenie pliku xlsx i wersja Excel to 12.0.

Po dostaniu się do tego komunikatu o błędzie błąd: "nie można znaleźć instalowalnego ISAM" , postanawiam zmienić rzeczy trochę jak poniżej:

private const string OledbProviderString =      @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xls;Extended Properties='Excel 8.0;HDR=YES;';"; 
I tak, skończyłem z tą paskudną rzeczą., ale tutaj dostałem kolejną wiadomość silnik bazy danych Microsoft Access nie może otworzyć lub zapisać do pliku 'time_zone'. Jest już otwarty wyłącznie przez innego użytkownika, lub potrzebujesz uprawnień do przeglądania i zapisywania jego danych.Co mówi mi, że nie jestem daleko od rozwiązania tego problemu.

Może jest inny proces, który otworzył plik w międzyczasie i wszystko, co muszę zrobić, to restart i wszystko zacznie działać płynnie zgodnie z oczekiwaniami.

 0
Author: Nick,
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
2015-08-25 08:56:40

Przejdź do Start - >Uruchom i wpisz cmd spowoduje to uruchomienie wiersza polecenia (dostępne również od Start->Programy->Akcesoria- > Wiersz polecenia)

Type cd .. i naciśnij return wpisz cd .. i naciśnij ponownie return (rób tak, aż pojawi się monit :> )

Teraz musisz przejść do specjalnego folderu, który może być c:\windows\system32 albo może być c:\winnt\system32 albo może być c:\windows\sysWOW64 spróbuj wpisać każdy z tych np cd c:\windows\sysWOW64 (jeśli mówi, że system nie może znaleźć ścieżka określona, spróbuj następnego) cd c:\windows\system32 cd c:\winnt\system32 jeśli jeden z nich nie powoduje błędu, zatrzymaj, znalazłeś poprawny folder.

Teraz musisz zarejestrować biblioteki DLL OLE DB 4.0, wpisując te polecenia i naciskając return po każdym

Regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10dll regsvr32 Msjter40dll regsvr32 Msjint40.dll

 0
Author: user1089766,
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
2019-06-13 02:56:22

Nie ma dostawcy 64-bitowego dla Jet. Jeśli chcesz obsługiwać wiele źródeł DB, w tym Jet do programu Excel, musisz przynajmniej tę część aplikacji uruchomić w 32-bitowym procesie.

Błąd, który pojawia się podczas kompilacji dla x86 jest nieco dziwny. Nie rozumiem, jak w tym przypadku można odnieść się do 64-bitowych zestawów.

 -2
Author: AnthonyWJones,
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-02 14:16:48