Stworzyłem aplikację systemu Windows opracowaną w .NET 3.5 na 32-bitowym serwerze z systemem Windows 2008. Po wdrożeniu aplikacji na 64-bitowym serwerze wyświetla błąd „Dostawca Microsoft.Jet.OLEDB.4.0” nie jest zarejestrowany na komputerze lokalnym ”.
Tak więc, jako rozwiązanie tego problemu, zmieniłem właściwość kompilacji projektu na X86, dzięki czemu będzie on budowany w trybie 32-bitowym i odbuduje projekt na maszynie 32-bitowej. Ale ten sam projekt używa innych sterowników DB (DB2, SQL itp.) Do łączenia się z innymi bazami danych. Więc kiedy ponownie wdrożyłem moją aplikację w 64-bitowym systemie operacyjnym, zgłasza wyjątek „Próbowano załadować 64-bitowy zestaw na platformie 32-bitowej”.
Korzystam ze sterownika Microsoft.Jet.OLEDB.4.0 do odczytu i zapisu w programie Excel (.xls)
Jeśli problem występuje nadal w programie ASP.NET, wszystko, co musiałem zrobić, to zmienić ustawienie „Włącz aplikacje 32-bitowe” na True, w Ustawieniach zaawansowanych puli aplikacji.
źródło
mam ten sam problem
Zastosowałem odpowiedź przez neo, ale nie zadziałała, dopóki nie zmieniłem dostawcy na „Provider = Microsoft.ACE.OLEDB.12.0;” w ciągu połączenia.
Mam nadzieję, że to pomoże, jeśli ktoś napotka ten sam problem.
źródło
Wiem, że to dość stare pytania i wiele osób odpowiedziało. ale podsumowuję rzeczy do zrozumienia:
Jeśli rozszerzenie pliku to xls, a system operacyjny to 32 bity, tylko Ty możesz użyć „
Microsoft.Jet.OLEDB.4.0
”. Firma Microsoft nie wydała 64-bitowej wersji tego sterownika.Jeśli rozszerzenie pliku to xlsx lub system operacyjny to 64 bity, musisz użyć „
Microsoft.ACE.OLEDB.12.0
”. Aplikacja skompilowana w trybie 32/64 bitowym nie wpływa na wybór sterownika.Zawsze instaluj 64-bitowy sterownik
Microsoft.ACE.OLEDB.12.0
w 64-bitowym systemie operacyjnym. Jeśli masz już zainstalowany pakiet Office 32-bitowy, musisz uruchomić sterownik z cmd z argumentem / passive. Ten hack działa tylko do Office 2013, Microsoft zatrzymał to obejście od Office 2016 dla sterowników Microsoft.ACE.OLEDB.16.0.Pobierz sterowniki Microsoft.ACE.OLEDB.12.0
Jeśli aplikacja jest skompilowana z flagą AnyCPU, będzie szukać 64-bitowych sterowników dostępu w 64-bitowym systemie operacyjnym i 32-bitowych sterowników dostępu w 32-bitowym systemie operacyjnym.
źródło
Mam tę samą wiadomość, mam stronę internetową z do na Visual Studio 2010, czytam plik.xls na tej stronie, w moim projekcie visual nie ma żadnego problemu, kiedy umieszczam go na moim lokalnym serwerze IIS, rzuć mi Microsoft .Jet.OLEDB.4.0 „dostawca nie jest zarejestrowany na komputerze lokalnym” , naprawiłem ten problem, wykonując następujące kroki,
1.-Otwórz IIS
2.-Zmień appPool w Ustawieniach zaawansowanych
3.-true, aby włączyć aplikację 32-bitową.
i to wszystko
ps. Zmieniłem Menedżera konfiguracji na X86 na Active Solution Platform
źródło
Jeśli twoja aplikacja działa na localIIS, możesz rozwiązać ten problem, włączając 32-bitowe aplikacje w Ustawieniach zaawansowanych AppPool
źródło
Miałem ten sam problem. Zmieniłem konfigurację aplikacji na
x86
, a potem zadziałało!źródło
Właśnie zmieniłem swoją właściwość projektu na format x64
Projekt ---> Właściwości ---> Kompilacja ---> Target Framework ---> X64
źródło
Napotkaliśmy ten problem w aplikacji komputerowej.
Środowisko programistyczne: Windows 7 Ultimate - 64-bitowy .Net Framework 4.5 Provider = Microsoft.Jet.OLEDB.4.0
Rozwiązano go, zmieniając docelową platformę na X86 z dowolnego procesora. Właściwości projektu >> Kompilacja >> Cel platformy.
źródło
Wystąpił ten problem z moją aplikacją komputerową (dostawca „Microsoft.Jet.OLEDB.4.0” nie jest zarejestrowany na komputerze lokalnym). Nie miałem opcji budowania jako aplikacja 32-bitowa. Mam nadzieję, że pomoże to innym w tej samej sytuacji.
Zrobiłem następujące i problem zniknął:
Zainstalowano 64-bitową wersję programu Microsoft Access Database Engine 2010 Redistributable , zgodnie z sugestią neo
Zmieniłem mojego dostawcę na Microsoft.ACE.OLEDB.12.0
źródło
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 gotowy plik .exe i musiałem użyć tego rozwiązania. Korzysta
CorFlags.exe
z .Net SDK, aby zmienić charakterystykę ładowania aplikacji.CorLibs.exe
po prostu sprawdź Narzędzia programistyczne systemu Windows .CorFlags.exe
. W przypadku mojej instalacji zestawu .NET Framework 3.5 SDK było toC:\Program Files\Microsoft SDKs\Windows\v7.0\Bin
.path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+
.Jesteś skończony! Ustawia to flagi początkowe dla twojego programu, tak aby uruchamiał się w 32-bitowym trybie WOW64, a zatem może uzyskać dostęp do microsoft.jet.oledb.4.0.
źródło
Zmień zaawansowane ustawienia puli aplikacji Ustawienia usług IIS. Włącz aplikację 32-bitową
źródło
Po prostu zmień właściwość w oparciu o swój komputer i wszystkie zrobiły :-)
Projekt ---> Właściwości ---> Kompilacja ---> Target Framework ---> X64
lub
Projekt ---> Właściwości ---> Kompilacja ---> Target Framework ---> X86
źródło
Zmieniłem ciąg połączenia z
var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Źródło danych = {0}; Zachowaj informacje bezpieczeństwa = True; Jet OLEDB: Hasło bazy danych =;", gisdbPath);
do tego:
var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Mode = Share Deny None; Source Data = {0}; id użytkownika = Admin; hasło =;", gisdbPath);
Działa ode mnie nigdy nie poprosiłem o rejestrację Microsoft.Jet.OLEDB.4.0.
źródło
Rzeczywiście nie ma 64-bitowej wersji Jet - i nie ma (najwyraźniej) planów jej stworzenia.
Możesz być w stanie użyć 64-bitowego sterownika ACE: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734
Jednak możesz być w stanie zmienić projekt na 32-bitowy w wersji Express (nie próbowałem i nie mam już zainstalowanego 2008 w żadnym smaku)
Może nadszedł czas, aby całkowicie zlikwidować dostęp do baz danych, ugryźć kulę i zamiast tego wybrać serwer SQL?
źródło
Używam VS2013 dla Winforms, poniższe rozwiązanie działało dla mnie.
Pobierz: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734
Następnie ustaw VS Target Platform na x86.
źródło
W starszych wersjach IIS nie znajdziesz
Advance Settings
takiej opcji,Enable 32-bit Applications
abyś musiał 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
Referencja: tutaj
źródło
Otrzymywałem ten sam wyjątek podczas uruchamiania programu „SQL Server 2014 Import and Export Data (64-bit)” na moim systemie Windows 8.1.
Aby rozwiązać problem ten problem, wykonałem następujące czynności
uruchomiłem SQL Server 2014 Import i Export Data (32-bit) zamiast 64-bit i działa dla mnie. Nie zmieniłem żadnego ustawienia IIS i nie zainstalowałem żadnego dodatkowego oprogramowania.
źródło
Wiem, że mam ten problem w kółko podczas wdrażania mojej aplikacji na nowym serwerze, ponieważ używam tego sterownika do łączenia się z plikiem Excel. Oto co robię ostatnio.
Jest Windows Server 2008 R2, instaluję sterowniki Access dla komputera x64 bitowego i pozbywam się tego komunikatu, co sprawia, że jestem bardzo szczęśliwy, że wpadłem na inny.
Ten poniżej działa doskonale na moim komputerze deweloperskim, ale na serwerze pojawia się błąd nawet po zainstalowaniu najnowszych sterowników ODBC, co myślę, że to jest problem, ale tak to rozwiązałem.
Zastępuję nowego dostawcę, takiego jak poniżej:
Ale kiedy to robię, należy zauważyć jedną rzecz. Korzystanie z rozszerzenia pliku .xlsx i wersji programu Excel to 12.0.
Po przejściu do tego komunikatu o błędzie Błąd: „Nie można znaleźć instalowalnego ISAM” , postanawiam zmienić rzeczy trochę jak poniżej:
i tak, skończyłem z tą paskudną rzeczą, ale tutaj dostałem kolejną wiadomość Aparat bazy danych Microsoft Access nie może otworzyć ani zapisać do pliku „strefa_czasu”. 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.
Być może w międzyczasie otworzył się plik i wszystko, co muszę zrobić, to ponowne uruchomienie i wszystko zacznie działać płynnie zgodnie z oczekiwaniami.
źródło
przejdź do Start-> Uruchom i wpisz cmd, co uruchomi wiersz polecenia (dostępny również w Start-> Programy-> Akcesoria-> Wiersz polecenia)
wpisz cd .. i naciśnij klawisz Return wpisz cd .. i naciśnij klawisz Return ponownie (rób tak, aż pojawi się monit:>)
teraz musisz przejść do specjalnego folderu, którym może być c: \ windows \ system32 lub może to być c: \ winnt \ system32 lub może to być c: \ windows \ sysWOW64, spróbuj wpisać każdy z nich, np. cd c: \ windows \ sysWOW64 (jeśli jest napisane, że system nie może znaleźć określonej ścieżki, spróbuj następnej) cd c: \ windows \ system32 cd c: \ winnt \ system32, jeśli jeden z nich nie powoduje błędu, przestań, znalazłeś poprawny folder.
teraz musisz zarejestrować biblioteki DLL OLE DB 4.0, wpisując te polecenia i naciskając klawisz Return po każdej z nich
regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll
źródło
Nie ma 64-bitowego dostawcy Jet. Jeśli chcesz obsługiwać wiele źródeł DB, w tym Jet do Excela, potrzebujesz co najmniej tej części aplikacji, aby działała w procesie 32-bitowym.
Błąd, który pojawia się podczas kompilacji dla x86, jest nieco dziwny. W tym przypadku nie widzę, w jaki sposób można odwoływać się do zestawów 64-bitowych.
źródło