Dostawca „Microsoft.ACE.OLEDB.12.0” nie jest zarejestrowany na komputerze lokalnym


442

Próbuję uzyskać dane z pliku Excel dotyczące zdarzenia kliknięcia przycisku. Mój ciąg połączenia to:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

Po kliknięciu przycisku pojawia się następujący błąd:

Dostawca „Microsoft.ACE.OLEDB.12.0” nie jest zarejestrowany na komputerze lokalnym.

Nie mam pojęcia, jak to naprawić. Mój system operacyjny to Windows 7.


5
Tylko styczny komentarz: używanie OLEDB do odczytu pliku Excel to starożytna technika, bardzo powolna, a jak odkryłeś, wymaga ręcznego instalowania dodatkowych pakietów na komputerze docelowym. (To prawda, że ​​pytanie zostało zadane w 2011 roku.) Zamiast tego użyj ClosedXml (dostępny w NuGet), który działa od razu po wyjęciu z pudełka.
Shaul Behr

3
@ShaulBehr Byłoby miło, ale ClosedXml działa tylko dla plików .xlsx, a nie .xls
Jimmy

2
Jeśli importujesz do Sql Server, możesz uruchomić tę kwerendę z ssms: wykonaj master.dbo.xp_enum_oledb_providers Powie ci, jakich dostawców, twoim zdaniem, masz. Dawniej miałem zarówno Microsoft.ACE.OLEDB.16.0, jak i Microsoft.ACE.OLEDB.12.0, ale kiedy próbowałem zaimportować dane, dostałem to samo „niezarejestrowany na twoim komputerze lokalnym” jak OP, zarówno dla Excel 16 i formaty plików Excel 2007 (odpowiednio oledb.16.0 i oledb.12.0). W tym momencie warto zmniejszyć straty i zrezygnować z oprogramowania Microsoft.
user1040323,

1
@ user1040323, execute master.dbo.xp_enum_oledb_providersmówi ci, co jest na serwerze, a nie na twoim komputerze lokalnym .
Nathan Goings,

1
Oto ten, który powinien działać; - Jest: niezbyt udokumentowane, ale znalazłem sposób na zainstalowanie zarówno wersji 32-bitowej, jak i 64-bitowej. Wystarczy dodać argument wiersza polecenia „/ passive” do polecenia: „C: \ ścieżka katalogu \ AccessDatabaseEngine_x64.exe” / passive
TaW

Odpowiedzi:


532

Musisz go zainstalować. Szukasz:


44
Pobrałem te składniki i one nie działały dla mnie, musiałem pobrać stąd redystrybucję Microsoft Access Database Engine 2010: microsoft.com/en-in/download/details.aspx?id=13255 Jestem pewien, że to dlatego, że Używam MS Office 2013. Dziękujemy za wskazanie mi właściwego kierunku.
Sizons,

5
Musiałem zainstalować silnik bazy danych dostępu i sterownik pakietu Office 2007: Komponenty do przesyłania danych tutaj microsoft.com/en-us/download/confirmation.aspx?id=23734, aby go uruchomić.
Chris,

6
W mojej sytuacji wszystko działało dobrze, a potem nagle pojawił się ten błąd. Więc co mogło się stać przyczyną tego? Nie zmieniono kodu.
eetawil

21
W moim przypadku musiałem przejść z „Any CPU” na x64, aby dopasować się do mojej architektury.
Rob Sedgwick,

2
Kuba Rozpruwacz odnosi się do rozwiązania podanego w samej odpowiedzi, a nie do komentarzy. 2007 Office System Driver: Data Connectivity ComponentsNatychmiastowa instalacja rozwiązanego problemu.
Silkfire,

156

64-bitowa wersja „Microsoft Access Database Engine 2010 Redistributable”, która pozwoli ci korzystać z dostawcy „Microsoft.ACE.OLEDB.12.0” jest dostępna tutaj:
http://www.microsoft.com/en-us/ download / details.aspx? id = 13255

Jeśli korzystasz z pobierania z zaakceptowanej odpowiedzi, będziesz musiał zbudować dla x86, jak wskazał @ backtestbroker.com.


18
Jeśli używasz VS 2012, upewnij się również, że pole wyboru „Preferuj 32-bit” nie jest zaznaczone we właściwościach projektu >> Kompilacja >> Ogólna konfiguracja.
devstruck

3
Korzystam z VS 2008 (nie pytaj) i to rozwiązanie nie działało, dopóki nie przeczytałem wskazówki post_erasmus i nie ustawiłem „Platform Target” na x64 we Właściwościach >> Kompilacja >> Ogólna konfiguracja mojej aplikacji. Posortowane, dzięki!
Zasób

1
Link w tej odpowiedzi pozwala również pobrać i zainstalować wersję 32-bitową. Mimo że mam Windows 7 64-bit, IIS Express programu Visual Studio 2013 domyślnie działa w trybie 32-bitowym, a niektóre składniki pakietu Office 2013 zostały już zainstalowane w wersji 32-bitowej, więc potrzebowałem instalacji 32-bitowej.
Eric Barr

1
Z tą odpowiedzią muszę również ustawić „Włącz aplikacje 32-bitowe” w puli aplikacji na False.
iowatiger08,

1
To pomogło rozwiązać mój problem. Moja aplikacja VS 2019 jest kompilowana przy użyciu dowolnego procesora, co daje bibliotekę x64. Miałem zainstalowaną 32-bitową wersję pakietu Office 2013, co uniemożliwiło mi instalację silnika DB Access x64. Po zainstalowaniu wersji Office x64 byłem w stanie zainstalować silnik x64 i teraz wszystko działa. Piekło DLL żyje.
Mike Lowery,

74

w zależności od aplikacji (32 / 64bit) korzystającej z połączenia, które możesz właśnie zainstalować

Podsumowanie:

  • wszystkie biura w latach 2007-2016 zawierają dostawcę „Microsoft.ACE.Oledb.12.0”
  • w zależności od architektury aplikacji wybierz odpowiedni silnik wykonawczy (32/64) 6
  • sprawdzić dostawców z polecenia PowerShell z 32- i 64-bitowej powłoce :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
  • a zobaczysz, z którego dostawcy może korzystać Twój system

długa historia: ciągi można znaleźć w http://live.sysinternals.com/strings.exe

na przykład. w systemie 64-bitowym z zainstalowanymi sterownikami 32-bitowymi

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"

nawet w nadchodzącym biurze 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL

znajdziesz struny

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013 jest również wyposażony w csi.dll

c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll

który zawiera plik „ Microsoft.ACE.OLEDB.15.0

i Office 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll

który ma wersję „ Microsoft.ACE.OLEDB.16.0


Ten błąd wystąpił w VS2015 przy użyciu Nuget LinqToExcel. Okazuje się, ponieważ ponieważ miałem zainstalowaną wersję x64 ACE, musiałem jawnie budować dla x64 (Configuration Manager), zamiast atakować dowolny procesor.
subsci

Powershell pokazał, że „Microsoft.ACE.Oledb.12.0” jest już zainstalowany. Jednak zainstalowanie pakietu Access 2007 (aka 2007 Office System Driver: Data Connectivity Components ) mnie uruchomiło. Już w moim systemie: Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy

6
Skrypt PowerShell informujący, która wersja jest zainstalowana, jest genialny! Dziękuję @Bernhard
Rob Bowman,

nieco offtopic, ale ten prosty PowerShell jest dla twoich sterowników ODBC:Get-OdbcDriver | select Name,Platform
Bernhard

To rozwiązało problem dla mnie na 64-bitowym serwerze, pobierając środowisko wykonawcze 32-BIT Access 2016. Zasadniczo zacznij od wersji 32-bitowej, aby być bezpiecznym (złe rzeczy zdarzają się, gdy próbujesz zmienić elementy na 64-bitowe w projekcie).
Eric Mutta

45

Pierwszą rzeczą, którą musisz sprawdzić, jest konfiguracja kompilacji aplikacji.

  • Jeśli zbudowałeś projekt na platformie x86 , to aby rozwiązać problem, zainstaluj na swoim komputerze następujące pakiety:

    1. Aby korzystać z dostawcy „Microsoft.ACE.OLEDB.12.0”, musisz najpierw zainstalować pakiet redystrybucyjny Microsoft Access Database Engine 2010 , ta instalacja jest dostępna pod adresem : http://www.microsoft.com/download/en/details.aspx ? id = 13255 .

      Po zakończeniu instalacji spróbuj uruchomić aplikację, jeśli to rozwiąże problem, jeśli nie, przejdź do kroku 2.

    2. Ten następny krok to niewyjaśnione obejście, które działa w pakiecie Office 2010, mimo że jest to komponenty łączności danych pakietu Office 2007. Nie jestem pewien, dlaczego to działa, ale działa i zostało udowodnione, że działa w prawie wszystkich przypadkach. Musisz zainstalować sterownik pakietu Office 2007: Data Connectivity Components , ta instalacja jest dostępna pod adresem : http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

      Po zakończeniu instalacji spróbuj uruchomić aplikację, powinno to rozwiązać problem.

  • Jeśli próbujesz uruchomić aplikację zbudowaną na platformie x64 lub AnyCPU , polecam najpierw sprawdzenie, czy działa ona zgodnie z oczekiwaniami na platformie x86. Jeśli nie działa na tej platformie x86, wykonaj kroki z pierwszej części i sprawdź, czy działa zgodnie z oczekiwaniami.

    Przeczytałem, że sterowniki MS Access, w tym sterownik bazy danych OLEDB, działają tylko na platformie x86 i są niezgodne na platformie x64 lub AnyCPU. Ale wydaje się to nieprawdziwe. Sprawdziłem, czy moja aplikacja działa podczas budowania x86, a następnie zainstalowałem aparat bazy danych Access, używając flagi pasywnej.

    1. Najpierw pobierz plik lokalnie. Możesz pobrać instalację tutaj: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. Instalowanie przy użyciu wiersza polecenia z flagą „/ passive”. W wierszu polecenia uruchom następujące polecenie: „AccessDatabaseEngine_x64.exe / passive”

    Po tych 2 krokach udało mi się uruchomić aplikację po zbudowaniu w konfiguracji kompilacji x64 lub AnyCPU. To wydawało się rozwiązać mój problem.

Uwaga: kolejność kroków wydaje się mieć znaczenie, więc postępuj zgodnie z nimi.


5
Miałem problem polegający na tym, że zmieniałem aplikację 32-bitową na 64-bitową i już nie działała. Druga część instrukcji działa idealnie! Flaga / passive umożliwia instalację nawet przy 32-bitowym pakiecie Microsoft Office.
Freddy,

1
Wskazówka: Wyodrębnij plik AccessDatabaseEngine_x64.exe do folderu, aby uzyskać pliki AceRedist.msi i Data.cab. Otwórz wiersz polecenia cmd w trybie administratora i uruchom AceRedist.msi /passive.
Jeremy Thompson

1
Wielkie dzięki. Pierwsza opcja działała dla mnie. Pamiętam, jak wiele miałem problemów z odinstalowaniem 32-bitowego pakietu Office i dopiero po zainstalowaniu 64-bitowego pakietu Office problem ten został naprawiony wcześniej. Ale ten 64-bitowy komponent biurowy zrobił magię.
Biki,

Z powodu 2 punktów mam naprawione. Dziękuję Ci bardzo. Muszę zainstalować ten microsoft.com/download/en/confirmation.aspx?id=23734 .
SENA

33

Ten błąd / wyjątek wystąpił w programie Visual Studio 2010, gdy zmieniłem kompilację w oknie dialogowym Menedżer konfiguracji z „x86” na „Dowolny procesor”. Rozumiem, że ten sterownik bazy danych OLEDB działa tylko w architekturze x86 i nie jest kompatybilny z 64-bitami. Zmiana konfiguracji kompilacji z powrotem na x86 rozwiązała problem.


5
OLEDB jest kompatybilny z x64. Może działać na DOWOLNEJ platformie, NIE TYLKO x86, ale także jako Dowolny procesor. Pełna odpowiedź poniżej: stackoverflow.com/a/32760211/3637582
Merav Kochavi

Podczas debugowania aplikacji w programie Visual Studio faktycznie pomaga wybrać x86 zamiast dowolnego procesora / x64 w menedżerze konfiguracji.
nic nie wiem

25

Zainstalowałem sterowniki MS i nadal nie działało to dla mnie. Potem znalazłem ten post na blogu, który rozwiązał problem. Przeczytaj to tam, w przeciwnym razie użyj tych dwóch obrazów (połączonych z tego postu) jako summary TLDR:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj


Miałem zamiar opublikować to jako mój wkład. To był mój problem. Zmieniłbym to ustawienie IIS wczoraj, ponieważ jeden projekt w moim rozwiązaniu został skompilowany x86, więc zakładam, że sklasyfikuje cały program jako 32-bitowy.
Lee,

Mój serwer działa @ 64 bity, ale zainstalowany MS Office Components ma 32 bity. To rozwiązało mój problem. Dziękuję Ci.
MarceloBarbosa

Co za niewiarygodnie trudna rzecz :( Zastanawiam się, czy mógłbyś napisać to w PowerShell i po prostu zintegrować z jakimś skryptem automatycznej konfiguracji serwera?
David Rogers,

@DavidRogers prawdopodobnie, ale nie jestem ekspertem od PS, więc nie patrz na mnie za to! ;-)
Shaul Behr

@ShaulBehr Mam nadzieję, że zapewnia to wgląd innym, konkretnym poleceniem, którego użyłem było (w podwyższonym oknie PowerShell / cmd): „C: \ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64: true „
David Rogers,


15

Dla wszystkich tych, których to dotyczy.

Wystąpił błąd ...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

... jak opisano w OP, Shailesh Sahu.

Mam 64-bitowy system Windows 7.

Mój problem dotyczy skryptów PowerShell , ale używa ciągu połączenia, podobnego do postu OP, więc mam nadzieję, że moje ustalenia można zastosować do C #, PowerShell i dowolnego innego języka opartego na sterowniku „Microsoft.ACE.OLEDB”.

Postępowałem zgodnie z instrukcjami w tym wątku na forum MS: http://goo.gl/h73RmI

Najpierw próbowałem zainstalować wersję 64-bitową , a następnie zainstalować 32- bitową wersję AccessDatabaseEngine.exe z tej strony http://www.microsoft.com/en-us/download/details.aspx?id=13255

Ale wciąż nie ma radości.

Następnie uruchomiłem poniższy kod w PowerShell (ze strony SQL Panda http://goo.gl/A3Hu96 )

(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

Jak widać, mam Microsoft.ACE.OLEDB. 15 .0 (piętnaście) nie Microsoft.ACE.OLEDB. 12 0,0 (dwanaście)

Więc zmieniłem ciąg połączenia na 15 i zadziałało.

Tak więc krótki fragment programu PowerShell w celu zademonstrowania, jak programowo kodować wersję ...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

zmieniono, aby wybrać najnowszą wersję ACE, jeśli jest więcej niż jedna

Mamy nadzieję, że każdy, kto to znajdzie, może teraz sprawdzić, która wersja OLEDB jest zainstalowana i użyć odpowiedniego numeru wersji.


Cześć, próbuję czytać arkusze Excela za pomocą PowerShell. Pliki Excel przechowywane w bibliotece dokumentów SharePoint i nie ma instalacji programu Excel na serwerze. Mam system Windows Server 2008 R2. Zainstalowałem sterownik Office System: Data Connectivity Components, ale po uruchomieniu zapytania nie widzę Microsoft.ACE.OLEDB. Czy masz na to pomysł? i jakieś sugestie? Z góry dziękuję.
doganak

3
Znalazłem odpowiedź Poprosiłem naszego administratora systemu o zainstalowanie MS Access Database Engine. Zainstalował wersję x86. Kiedy ponownie uruchomiłem zapytanie w PowerShell x86, zobaczyłem ACE.OLEDB.
doganak

Niesamowity kod PowerShell. Miałem wersję 32-bitową (która nie pojawiła się na liście PowerShell), co uniemożliwiło mi zainstalowanie wersji 64-bitowej. Po usunięciu wersji 32-bitowej mogłem zainstalować wersję 64-bitową bez komunikatu „masz już 32-bitowe składniki pakietu Office ...”. Wersja 64-bitowa pojawiła się na liście PowerShell, a moja aplikacja zaczęła działać.
Doppelganger

13

Chociaż udzielono wielu odpowiedzi, problem, który napotkałem, nie został jeszcze wymieniony.

  • Mój scenariusz: aplikacja 64-bitowa, zainstalowany Win10-64, pakiet Office 2007 32-bit.
  • Instalacja 32-bitowego instalatora AccessDatabaseEngine.exe pobranego z MS informuje o powodzeniu, ale NIE została zainstalowana, co zostało potwierdzone za pomocą skryptu Powershell jednego z powyższych wpisów.

  • Instalacja 64-bitowego instalatora AccessDatabaseEngine_X64.exe zgłosiła szokujący komunikat o błędzie:

wprowadź opis zdjęcia tutaj

Bardzo proste rozwiązanie zostało znalezione tutaj na stronie Autodesk. Po prostu dodaj parametr / passive do ciągu wiersza poleceń, tak jak poniżej:

AccessDatabaseEngine_X64.exe / passive

Instalacja powiodła się, sterownik OleDb działał.

Pliki Excel, które przetwarzam za pomocą OleDb, są typu xlsx, wyprodukowane w programie EPPlus 4.5 i zmodyfikowane w programie Excel 2007.


1
Mógłbym zainstalować AccessDatabaseEngine_X64.exe w zwykły sposób, ale użyłem parametru pasywnego, aby zainstalować 32-bitową równowagę (AccessDataBaseEngine.exe). Następnie mogłem w końcu połączyć się z bazą danych Access z Visual Studio 2019.
VolkanOzcan

10

Musisz zmienić Platformę rozwiązań z „Dowolnego procesora” na „x86” lub „x64”, w zależności od szybkości instalacji pakietu Office.

Kroki podano poniżej:

  1. Kliknij prawym przyciskiem myszy plik rozwiązania w Eksploratorze rozwiązań: wprowadź opis zdjęcia tutaj

    1. Kliknij Menedżer konfiguracji.
    2. Kliknij Aktywna platforma rozwijana, jeśli x86 już tam jest, wybierz ją, w przeciwnym razie kliknij Nowy. wprowadź opis zdjęcia tutaj

    3. Wybierz x86 lub x64 z menu rozwijanego nowej platformy: wprowadź opis zdjęcia tutaj

Skompiluj i uruchom aplikację.


6

Jeśli zainstalowany „AccessDatabaseEngine” nadal nie pomaga, poniżej znajduje się rozwiązanie:

Musisz zmienić Active Solution Platform z „Any CPU” na „x86”.

Dostawca OLEDB nie jest zarejestrowany na komputerze lokalnym

Od CodeProject.com


Możesz uruchomić go na DOWOLNEJ platformie, NIE TYLKO „x86”, ale także jako „Dowolny procesor”, jak również „x64”. Pełna odpowiedź poniżej: stackoverflow.com/a/32760211/3637582
Merav Kochavi

6

Udało mi się to naprawić, wykonując czynności opisane w tym artykule: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered- na lokalnej maszynie

Najważniejsze dla mnie było to:

Podczas debugowania za pomocą IIS

domyślnie Visual Studio używa wersji 32-bitowej. Możesz to zmienić w programie Visual Studio, wybierając Narzędzia »Opcje» Projekty i rozwiązania »Projekty internetowe» Ogólne i wybierając

„Użyj 64-bitowej wersji IIS Express dla stron internetowych i projektów”

Po sprawdzeniu tej opcji, a następnie ustawieniu docelowej platformy mojego projektu z powrotem na „Dowolny procesor” (ustawiłem ją na x86 gdzieś w procesie rozwiązywania problemów), byłem w stanie przezwyciężyć błąd.


1
Dziękujemy, większość innych odpowiedzi dotyczy obniżenia do wersji 32-bitowej, ale pomaga to przejść do wersji 64-bitowej.
illinoistim

Dziękuję bardzo, tego właśnie szukam.
Manoj Kalluri

6

Jeśli debugujesz projekt internetowy, po prostu upewnij się, że IIS Express działa w wersji 32- lub 64-bitowej, w zależności od ustawień projektu.

Iść do

Narzędzia> Opcje> Projekty i rozwiązania> Projekty internetowe

i stamtąd zaznacz (lub odznacz) „Użyj 64-bitowej wersji IIS Express ...”


1
Wow, wiele godzin, próbując innych rozwiązań, tylko napraw to! dzięki
Hernaldo Gonzalez

5

Najpierw sprawdź, która wersja microsoft.ace.oledb.12.0 jest zainstalowana w twoim systemie.

Sprawdź poniżej ścieżki C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - 64 bit jest zainstalowany

Sprawdź poniżej ścieżki C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - bit x86 jest zainstalowany

Jeśli zainstalowano (x86), wówczas za pomocą menedżera konfiguracji zmień platformę rozwiązań na x86, w przypadku zmiany x64 na x64.

Jeśli nie jest dostępny, zainstaluj za pomocą poniższego linku

https://www.microsoft.com/en-us/download/details.aspx?id=23734


3

syp_dino,

Rozwiązanie dla mnie zaproponowane dla dostawcy „Microsoft.ACE.OLEDB.12.0” nie jest zarejestrowane na komputerze lokalnym ” jest zmiana platformy rozwiązań aktywnych z „Any CPU” na „x86”.

Kiedy wykonałem te kroki, przebudowałem rozwiązanie, złapałem EXE i umieściłem w sieci, wszystko działało gładko na 64-bitowym komputerze z Windows 7.


Możesz go uruchomić na dowolnej platformie, NIE TYLKO x86, ale także jako dowolny procesor. Zobacz moją odpowiedź poniżej: stackoverflow.com/a/32760211/3637582
Merav Kochavi

3

Miałem ten problem podczas próby importowania danych z pliku Excela (xlsx) do bazy danych SQL Server przy użyciu SSMS 2014.

Instalacja pakietu Office 2007 Driver: Data Connectivity Components załatwiła sprawę.


... a jeśli to nie zadziała, spróbuj wybrać inną „wersję programu Excel” z listy rozwijanej ekranu „wybierz źródło danych”. stackoverflow.com/a/56171883/283895
tgolisch

@Taran Link nie jest dostępny
evry1falls

Wygląda jak plik, ale nie mogę potwierdzić download.cnet.com/…
Taran

3

Napotkałem ten sam problem. Przejdź do właściwości rozwiązania i zmień dowolny procesor na x86, myślę, że to zadziała.


3

wykonaj 2 kroki: 1. w tym menu: projekt -> właściwości twojego projektu ... -> Kompilacja: odznacz „preferuj 32-bity” 2. w połączeniu Ciąg: pisz cuotes przed i po rozszerzonych właściwościach, tak jak to: Rozszerzone właściwości = ' Excel 12.0 Xml; HDR = TAK ”

                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
            var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
            var ds = new DataSet();

            adapter.Fill(ds, TableNmae);

            DataTable data = ds.Tables[TableNmae];
            dg1.DataSource = data;

Usunięcie zaznaczenia opcji „Preferuj 32-bit” wydawało się działać, gdy zainstalowałem pakiet redystrybucyjny Microsoft Access Database Engine 2010.
IT Delinquent

Odznałem pole „Preferuj 32-bity” i było uruchomione !!!
user1584253

3

Te konfiguracje działały w styczniu 2020 roku na mojej nowej wersji maszyny:

(Tylko 1 - x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 zainstalowany z argumentem / passive, jawnie ustawione ustawienia kompilacji VStudio na x64, z następującym ciągiem połączenia: Dostawca = Microsoft.ACE.OLEDB.16.0; Źródło danych = D: ... \ MyDatabase.accdb

(2 - x64 lub x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 zainstalowany z / passive argument, PLUS AccessDatabaseEngine 2010 (32-bitowy) zainstalowany z / passive argument, ustawienia kompilacji VStudio ustawione na AnyCPU, z następującym ciągiem połączenia: Provider = Microsoft.ACE.OLEDB.16.0; Źródło danych = D: ... \ MyDatabase.accdb

(Tylko 3 - x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32-bitowy) zainstalowany z argumentem / passive, ustawienia kompilacji VStudio ustawione na x86, z następującym ciągiem połączenia: Dostawca = Microsoft.ACE.OLEDB.12.0; Źródło danych = D: ... \ MyDatabase.accdb

UWAGI NA TEMAT AWARII

Korzystanie z dostawcy ACE.OLEDB.12.0 x64 w ciągu połączenia nie powiodło się, a tylko AccessDatabaseEngine_x64 2016 zainstalowany jak wyżej w (1).

Użycie AnyCPU w ustawieniach kompilacji Visual Studio nie powiodło się w (1). Wymagane jest ustawienie x64. Być może dzieje się tak, ponieważ AnyCPU oznacza, że ​​Vstudio musi zobaczyć dostawcę ACE.OLEDB.nn.0 x32 w czasie kompilacji.

ACE.OLEDB.12.0 2016 x32 / pasywny silnik NIE zainstalowałby się, gdy zobaczył aplikacje x64. (Działa ACE.OLEDB.12.0 2010 x32 / instalator pasywny.)

WNIOSKI

Aby korzystać z ustawień kompilacji x64, musisz mieć silnik bazy danych x64 2016 ORAZ ACE.OLEDB.16.0 dostawcę ciągu połączenia ORAZ jawne ustawienia kompilacji x64 do pracy z Office 365 w styczniu 2020 r. Korzystanie z opcji / passive ułatwia instalację. Podziękowania dla każdego, kto opublikował ten typ!

Aby użyć AnyCPU, musiałem mieć zainstalowany zarówno silnik ACE.OLEDB.12.0 2010 x32, jak i silnik ACE.OLEDB.16.0 x64. W ten sposób Vstudio mógł zobaczyć silniki x32 i x64 w czasie kompilacji „AnyCPU”. Mógłbym zmienić parametry połączenia dostawcy na ACE.OLEDB.12.0 dla operacji x32 lub na ACE.OLEDB.16.0 dla operacji x64. Oba działały dobrze.

Aby korzystać z ustawień kompilacji x86, musisz mieć silnik bazy danych x32 2010 ORAZ dostawcę ciągu połączenia ACE.OLEDB.12.0 ORAZ jawne ustawienia kompilacji x86 do pracy z Office 365 x32 w styczniu 2020 r.


2

Mam podobny problem podczas czytania pliku Excel.

Historia problemu:

Niedawno przeprowadziliśmy migrację naszej aplikacji z 32-bitowej na 64-bitową ze względu na wymaganą pamięć. W tym celu przeprowadziliśmy migrację systemu Windows 7 z wersji 32-bitowej na 64-bitową. Ale nadal zainstalowaliśmy 32-bitowe biuro na naszych komputerach.

ponieważ z tego powodu mieliśmy ten problem podczas importowania danych Excel do aplikacji.

Rozwiązanie,

Pobrałem 64-bitową wersję http://www.microsoft.com/en-us/download/details.aspx?id=13255 i zainstalowałem z argumentem jako,

AccessDatabaseEngine_x64.exe / passive

Bez zmiany kodu mój problem zostanie rozwiązany.

Uwaga:

W 64-bitowym systemie operacyjnym i 64-bitowym biurze moja funkcjonalność działała dobrze bez tej poprawki. Ta poprawka jest wymagana tylko wtedy, gdy nasza aplikacja jest 64-bitowa w 64-bitowym systemie operacyjnym z zainstalowanym 32-bitowym pakietem Office.


Ale Microsoft jest przeciwny temu rozwiązaniu. Niewielu moich klientów obserwuje zniekształcenie w innych programach pakietu Office z powodu tej poprawki.
Rahul Techie


1

Postępowałem zgodnie z instrukcjami określonymi przez innych; instalowanie tej poprawki, instalowanie tej poprawki, a także aparatu bazy danych Microsoft Access 2010.

Mój problem polegał na tym, że używam tej samej biblioteki (linq2sql) w 2 witrynach na moim komputerze; 1 działa, a 1 nie.

W końcu odkryłem, że musiałem „włączyć 32-bitowe aplikacje” w zaawansowanych ustawieniach aplikacji dla mojej niedziałającej strony.

Teraz wszystko działa dobrze.


1

można również wypróbować te kroki

W SQL Server: 1.Otwórz jedną bazę danych 2.Kliknij w opcji „Server Obtect” 3.Kliknij w „Połączonych serwerach” 4.Kliknij w „Dostawcach” 5.Kliknij sztywność w „Microsoft.ACE.OLEDB.12.0” 6. Odznacz wszystkie opcje i zamknij


1

Pamiętaj, aby zainstalować AccessDatabaseEngine na serwerze dla aplikacji sieci web.


1

Miałem ten sam problem, ale w tym przypadku dostawca microsoft-ace-oledb-12-0 został już zainstalowany na moim komputerze i działa dobrze dla innych opracowanych aplikacji.

Różnica między tą aplikacją a tą, w której miałem problem, polegała na tym, że Stare aplikacje działały w „ Lokalnych usługach IIS ”, podczas gdy ta z błędem była w „ IIS Express (uruchamiana z Visual Studio”). Więc to, co zrobiłem, to-

  1. Kliknij prawym przyciskiem myszy nazwę projektu.
  2. Idź do Właściwości
  3. Przejdź do zakładki internetowej po prawej stronie.
  4. W obszarze Serwery wybierz Lokalne IIS i kliknij przycisk Utwórz katalog wirtualny.
  5. Uruchom aplikację ponownie i działała.

1

Miałem Microsoft Access Database Engine 2010 Redistributable już zainstalowany na moim komputerze, ale nadal otrzymania Provider Microsoft ACE OLEDB błąd.

Potem przypomniałem sobie, że niedawno uaktualniłem do pakietu Office 2016, więc być może powinienem spróbować zainstalować ponownie program Microsoft Access Database Engine 2010 Redistributable . I to rozwiązało problem na moim komputerze.

Jeśli więc uaktualniłeś do innej wersji MS Office lub nawet naprawiłeś / ponownie zainstalowałeś MS Office, spróbuj ponownie zainstalować program Microsoft Access Database Engine 2010 Redistributable, zanim zmarnujesz czas na znalezienie innych poprawek. Powodzenia!


1

1.) Sprawdź ciąg połączenia za pomocą ConnectionStrings.com .

2.) Upewnij się, że masz zainstalowany poprawny silnik bazy danych. Były to dwa silniki baz danych, które mi pomogły.

Aparat redystrybucyjny Microsoft Access Database Engine 2010

Sterownik pakietu Office 2007: Komponenty do przesyłania danych

3.) Może występować problem z tym, że twoja platforma docelowa to „Dowolny procesor”, może być konieczne „X86” (Właściwości, kompilacja, platforma docelowa).


Możesz uruchomić go na DOWOLNEJ platformie, NIE TYLKO „x86”, ale także jako „Dowolny procesor”, jak również „x64”. Pełna odpowiedź poniżej: stackoverflow.com/a/32760211/3637582
Merav Kochavi

Ok, cóż, nie sądzę, że tak było w moim przypadku ... dlatego warto wspomnieć, że czyjaś platforma docelowa może być częścią problemu.
u8it

1

Jeśli pojawi się ten błąd podczas próby użycia ACE z aplikacji ASP.NET, najbardziej prawdopodobną przyczyną jest zainstalowanie jednej z 32-bitowych wersji. Domyślnie usługi IIS w 64-bitowym systemie operacyjnym będą uruchamiać aplikacje w 64-bitowym procesie roboczym. Procesy 64-bitowe nie mogą załadować 32-bitowych bibliotek DLL. Po nawiązaniu połączenia z dostawcą ACE, proces 64-bitowy będzie próbował zlokalizować 64-bitową bibliotekę DLL. Jeśli nie istnieje, pojawi się komunikat o błędzie, który Cię tu przywiózł.

W takim przypadku masz dwie opcje. Najpierw możesz zainstalować wersję 64-bitową 2010. Jeśli masz zainstalowaną 32-bitową wersję 2007, możesz po prostu zainstalować 64-bitową wersję 2010 obok niej. Jeśli masz zainstalowaną 32-bitową wersję 2010 roku, musisz ją odinstalować, a następnie pobrać i zainstalować 64-bitową wersję 2010 roku. Nie można zainstalować jednocześnie 32- i 64-bitowej wersji dostawcy 2010. Jeśli wykonujesz instalację na swoim komputerze deweloperskim, możesz być również ograniczony przez nieco istniejącą instalację pakietu Office.

Drugą opcją jest zmiana puli aplikacji w IIS, aby włączyć aplikacje 32-bitowe. Jeśli korzystasz z pełnej wersji IIS, możesz to zrobić za pomocą narzędzia do zarządzania (Panel sterowania »Narzędzia administracyjne» Menedżer internetowych usług informacyjnych (IIS)).

Aby uzyskać więcej informacji, zapoznaj się z poniższym linkiem


1

Ten błąd wystąpił podczas importowania danych z pliku Excel do MS-SQL. Dostawca został już zainstalowany (wersja 64-bitowa) i dziwiło mnie to, dlaczego nie działało. Więc wszystko, co zrobiłem, to zlokalizowałem używaną tutaj aplikację Import / Export, tj. .EXE. I znalazłem to w

C: \ Program Files \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe

Następnie uruchomiłem bezpośrednio plik .exe, aby wykonać import danych. I zadziałało!


Hm, miałem tam kilka wersji, SSMS musi używać niewłaściwej.
SteveCav

1

To mi teraz działało.

  1. Odwiedź tę stronę, a następnie pobierz odpowiedni pakiet dla swojego komputera (AccessDatabaseEngine.exe lub AccessDatabaseEngine_X64.exe)
  2. Zainstaluj to.
  3. Enjoye ... Twoje kody działają teraz ...

Ale w przypadku pakietu aplikacji można użyć dowolnego z następujących rozwiązań:

  1. Przejdź do „C: \ Program Files (x86) \ Common Files \ microsoft shared” lub „C: \ Program Files \ Common Files \ Microsoft Shared” i umieść katalog „OFFICE14” w tej samej lokalizacji pliku pakietu.

Lub

  1. Dołącz dwa projekty (w punkcie 1) do swojego pakietu instalacyjnego.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.