Ik probeer gegevens op te halen uit een Excel-bestand over een gebeurtenis met een klik op een knop. Mijn verbindingsreeks is:
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";
Toen ik op de knop klik, kreeg ik de volgende foutmelding:
De provider ‘Microsoft.ACE.OLEDB.12.0’ is niet geregistreerd op de lokale computer.
Ik heb geen idee hoe ik dit moet oplossen. Mijn besturingssysteem is Windows 7.
Antwoord 1, autoriteit 100%
Nou, je moet het installeren. U zoekt:
Antwoord 2, autoriteit 29%
Een 64-bits versie van de ‘Microsoft Access Database Engine 2010 Redistributable’ waarmee u de provider ‘Microsoft.ACE.OLEDB.12.0’ kunt gebruiken, is hier beschikbaar:
http://www.microsoft.com/en-us/download/details.aspx? id=13255
Als je de download van het geaccepteerde antwoord gebruikt, moet je bouwen voor x86, zoals aangegeven door @backtestbroker.com.
Antwoord 3, autoriteit 16%
afhankelijk van de app (32/64bit) die de verbinding gebruikt die je zou kunnen installeren
- Toegang tot 2007-engines (alleen 32-bits)
- Toegang tot 2010 (32&64bit)
- Toegang tot 2013 volledige runtime (32&64bit! >200mb )
- Toegang tot 2016 runtime
- Toegang tot runtime van 2019
Samenvatting:
- alle kantoren van 2007-2016 bevatten de provider “Microsoft.ACE.Oledb.12.0”
- afhankelijk van uw applicatiearchitectuur kiest u de juiste runtime-engine (32/64)6
-
controleer uw providers met het powershell-commando van zowel 32- als 64-bits shell:
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
-
en u zult zien welke provider uw systeem kan gebruiken
het lange verhaal:
de strings zijn te vinden met http://live.sysinternals.com/strings.exe
bijv. op een 64-bits systeem met 32-bits stuurprogramma’s geïnstalleerd
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"
zelfs in het komende kantoor 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
je zult de snaren vinden
-
Microsoft.ACE.OLEDB
-
Microsoft.ACE.Oledb.12.0
de Office 2013 wordt ook geleverd met csi.dll
c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
die de “Microsoft.ACE.OLEDB.15.0” bevat
en 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
die de “Microsoft.ACE.OLEDB.16.0” versie heeft
Antwoord 4, autoriteit 9%
Het eerste dat u moet controleren, is uw buildconfiguratie van uw toepassing.
-
Als u uw project onder x86-platform heeft gebouwd, dan om
om uw probleem op te lossen moet u de volgende pakketten installeren op uw:
automaat:-
Als u de provider ‘Microsoft.ACE.OLEDB.12.0’ wilt gebruiken, moet u:
installeer de Microsoft Access Database Engine 2010 Redistributable
ten eerste is deze installatie beschikbaar op:
http://www.microsoft.com/download/en/details.aspx?id=13255.Nadat de installatie is voltooid, probeert u uw toepassing uit te voeren, als dit
lost het probleem uitstekend op, zo niet, ga dan verder met stap 2. -
Deze volgende stap is een onverklaarbare oplossing, die werkt voor Office
2010, ook al zijn het de Data Connectivity Components van Office 2007. Ik weet niet precies waarom dit werkt, maar het werkt wel en het is bewezen dat het in bijna alle gevallen werkt. U moet het 2007 Office System Driver: Data Connectivity Componentsinstalleren. Deze installatie is beschikbaar op:
http://www.microsoft.com/download/en/confirmation.aspx?id=23734.Nadat deze installatie is voltooid, probeert u uw toepassing uit te voeren, dit zou het probleem moeten oplossen.
-
-
Als u een toepassing probeert uit te voeren die is gebouwd onder x64 of AnyCPU
platform, raad ik aan eerst te valideren dat het werkt zoals verwacht
onder het x86-platform. In het geval dat het daar niet onder valt
x86-platform, voer de stappen in het eerste deel uit en valideer dat
het werkt zoals verwacht.Ik heb gelezen dat de MS Access-stuurprogramma’s inclusief de OLEDB-database
driver werkt alleen onder het x86-platform en is incompatibel onder
het x64- of AnyCPU-platform. Maar dit blijkt niet waar te zijn. l
gevalideerd dat mijn applicatie actief was bij het bouwen van x86, dan heb ik
installeerde de Access Database Engine met behulp van de passieve vlag.- Download eerst het bestand lokaal U kunt de installatie downloaden
hier: http://www.microsoft.com/en-us/download/details. aspx?id=13255 - Installeren met behulp van de opdrachtprompt met de vlag ‘/passive’. In
de opdrachtprompt voer de volgende opdracht uit:
‘AccessDatabaseEngine_x64.exe /passive’
Na deze 2 stappen slaagde ik erin om mijn applicatie uit te voeren na het inbouwen
x64- of AnyCPU-buildconfiguratie. Dit leek mijn probleem op te lossen. - Download eerst het bestand lokaal U kunt de installatie downloaden
Opmerking: de volgorde van de stappen lijkt een verschil te maken, dus volg dienovereenkomstig.
Antwoord 5, autoriteit 6%
Ik kreeg deze fout/uitzondering in Visual Studio 2010 toen ik mijn build in het dialoogvenster Configuration Manager veranderde van “x86” in “Elke CPU”. Dit OLEDB-databasestuurprogramma werkt alleen in x86 en is niet 64-bits compatibel. Het wijzigen van de buildconfiguratie naar x86 loste het probleem voor mij op.
Antwoord 6, autoriteit 5%
Ik heb de MS-stuurprogramma’s geïnstalleerd en het werkte nog steeds niet voor mij. Toen vond ik deze blogpostdie het probleem heeft opgelost. Lees het daar, gebruik anders deze twee afbeeldingen (gelinkt vanuit dat bericht) als de TLDR-samenvatting:
Antwoord 7, autoriteit 3%
Hoewel er veel antwoorden zijn gegeven, werd het probleem dat ik tegenkwam nog niet genoemd.
- Mijn scenario:64-bits toepassing, Win10-64, Office 2007 32-bits geïnstalleerd.
-
Installatie van het 32-bits installatieprogramma AccessDatabaseEngine.exezoals gedownload van MS
meldt succes, maar is NIET geïnstalleerd, zoals geverifieerd met de Powershell
Script van een van de bovenstaande berichten. -
Installatie van het 64-bits installatieprogramma AccessDatabaseEngine_X64.exerapporteerde een schokkende foutmelding:
De zeer eenvoudige oplossing is gevonden hierop een Autodesk-site.
Voeg gewoon de parameter /passive toe aan de opdrachtregelreeks, zoals deze:
AccessDatabaseEngine_X64.exe /passive
Installatie geslaagd, het OleDb-stuurprogramma werkte.
De Excel-bestanden die ik met OleDb verwerk, zijn van het type xlsx, geproduceerd met EPPlus 4.5 en aangepast met Excel 2007.
Antwoord 8, autoriteit 3%
Voor iedereen die hier nog steeds last van heeft.
Ik krijg de fout…
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
…zoals beschreven door de OP, Shailesh Sahu.
Ik heb 64-bits Windows 7.
Mijn probleem zit in PowerShell-scripts, maar gebruikt een verbindingsreeks, vergelijkbaar met de post van het OP, dus hopelijk kunnen mijn bevindingen worden toegepast op C#, PowerShell en elke andere taal die vertrouwt op de “Microsoft .ACE.OLEDB”-stuurprogramma.
Ik volgde de instructies op deze MS-forumthread: http://goo.gl/h73RmI
Ik heb eerst geprobeerd de 64-bits-versie te installeren en daarna de 32-bits-versie van AccessDatabaseEngine.exe vanaf deze pagina
http://www.microsoft.com/en-us/download /details.aspx?id=13255
Maar nog steeds geen vreugde.
Vervolgens heb ik de onderstaande code uitgevoerd in PowerShell(van de site van SQL Panda http://goo. gl/A3Hu96)
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
…wat me dit resultaat gaf (ik heb andere gegevensbronnen verwijderd voor de beknoptheid)…
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
Zoals je kunt zien, heb ik Microsoft.ACE.OLEDB.15.0 (vijftien) niet Microsoft.ACE.OLEDB.12.0 (twaalf)
Dus ik heb mijn verbindingsreeks gewijzigd naar 15 en het werkte.
Dus een snel PowerShell-fragment om te demonstreren hoe de versie soft-coded kan worden…
$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`";"
aangepast om de nieuwste ACE-versie te kiezen, indien meer dan één
Hopelijk kan iedereen die dit vindt nu controleren welke OLEDB-versie is geïnstalleerd en het juiste versienummer gebruiken.
Antwoord 9, autoriteit 3%
Als je 64-bit gebruikt maar nog steeds problemen hebt, zelfs na het installeren van AccessDatabaseEngine, ga dan naar dit berichtheeft het probleem voor mij opgelost.
d.w.z. U moet dezeAccessDatabaseEngineinstalleren
Antwoord 10, autoriteit 3%
U moet het oplossingsplatform wijzigen van “Elke CPU” in “x86” of “x64” op basis van de bitness van de kantoorinstallatie.
De stappen worden hieronder gegeven:
Compileer en voer uw applicatie uit.
Antwoord 11
Ik heb dit kunnen oplossen door de stappen in dit artikel te volgen: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0- provider-is-niet-geregistreerd-op-de-lokale-machine
Het belangrijkste punt voor mij was dit:
Bij het debuggen met IIS,
standaard gebruikt Visual Studio de 32-bits versie. Je kunt dit veranderen
vanuit Visual Studio door naar Extra Opties Projecten en
Oplossingen Webprojecten Algemeen en kiezen
“Gebruik de 64-bits versie van IIS Express voor websites en projecten”
Nadat ik die optie had aangevinkt en het platformdoel van mijn project had teruggezet op “Elke CPU” (ik had het ergens in het probleemoplossingsproces op x86 gezet), kon ik de fout oplossen.
Antwoord 12
Als je een webproject debugt, zorg er dan voor dat IIS Expressin 32 of 64 bits draait, afhankelijk van je projectinstellingen.
Ga naar
Gereedschappen > Opties > Projecten en oplossingen > Webprojecten
en van daaruit de optie ‘Gebruik 64-bits versie van IIS Express…’ aanvinken (of deselecteren)
Antwoord 13
Als de geïnstalleerde “AccessDatabaseEngine” nog steeds niet helpt, volgt hieronder de oplossing:
U moet het Active Solution Platform wijzigen van “Elke CPU” in “x86”.
OLEDB-provider is niet Geregistreerd op de lokale machine
Van CodeProject.com
Antwoord 14
Controleer eerst welke versie van microsoft.ace.oledb.12.0 op uw systeem is geïnstalleerd.
Check onderstaand pad C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL –64 bit is geïnstalleerd
Check onderstaand pad C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL –x86 bit is geïnstalleerd
Als (x86) is geïnstalleerd, verander dan met behulp van configuratiebeheer het oplossingsplatform naar x86, voor x64 verander naar x64.
Indien niet beschikbaar, installeer dan via onderstaande link
https://www.microsoft.com/en- us/download/details.aspx?id=23734
Antwoord 15
doe deze 2 stappen:
- in dit menu: project -> uw project eigenschappen… -> Build: verwijder het vinkje bij “voorkeur 32-bits”
- in connectionString : schrijf cuotes voor en na Uitgebreide eigenschappen, zoals deze: Extended Properties=’Excel 12.0 Xml;HDR=YES’
var fileName = string.Format("{0}", openFileDialog1.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;
Antwoord 16
syp_dino,
De oplossing voor mij, zoals u suggereerde voor de “Microsoft.ACE.OLEDB.12.0′-provider is niet geregistreerd op de lokale computer”-fout, is om het Active Solution Platform te wijzigen van “Elke CPU” naar “x86”.
Toen ik die stappen uitvoerde, de oplossing herbouwde, de EXE pakte en op het netwerk plaatste, werkte alles soepel op de Windows 7 64-bits machine.
Antwoord 17
Ik had hetzelfde probleem. Ga naar de Oplossingseigenschappen en verander Elke CPU in x86, ik denk dat het het werk zal doen.
Antwoord 18
Deze configuraties werkten in januari 2020 op mijn nieuwe machine-build:
(alleen 1 – x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 geïnstalleerd met /passive argument, VStudio build-instellingen expliciet ingesteld op x64, met de volgende verbindingsreeks: Provider= Microsoft.ACE.OLEDB.16.0; Gegevensbron=D:…\MijnDatabase.accdb
(2 – x64 of x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 geïnstalleerd met /passive argument, PLUS AccessDatabaseEngine 2010 (32bit) geïnstalleerd met /passive argument, VStudio build-instellingen ingesteld op AnyCPU, met de volgende verbindingsreeks : Provider= Microsoft.ACE.OLEDB.16.0; Gegevensbron=D:…\MijnDatabase.accdb
(alleen 3 – x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) geïnstalleerd met /passive argument, VStudio build-instellingen ingesteld op x86, met de volgende verbindingsreeks: Provider= Microsoft.ACE.OLEDB.12.0 ; Gegevensbron=D:…\MijnDatabase.accdb
OPMERKINGEN BIJ STORINGEN
Het gebruik van de ACE.OLEDB.12.0 x64-provider in de verbindingsreeks is mislukt met alleen de AccessDatabaseEngine_x64 2016 geïnstalleerd zoals hierboven in (1).
Het gebruik van AnyCPU in de instellingen voor het bouwen van de visuele studio is mislukt in (1). Instelling x64 is vereist. Misschien komt dit omdat AnyCPU betekent dat Vstudio een x32 ACE.OLEDB.nn.0-provider moet zien tijdens het compileren.
De ACE.OLEDB.12.0 2016 x32 /passive-engine zou NIET worden geïnstalleerd wanneer x64-toepassingen in de buurt waren. (Het ACE.OLEDB.12.0 2010 x32 /passieve installatieprogramma werkte.)
CONCLUSIES
Als u x64-buildinstellingen wilt gebruiken, moet u de 2016x64-database-engine EN de ACE.OLEDB.16.0-verbindingsreeksprovider EN expliciete x64-buildinstellingen hebben om te werken met Office 365 in januari 2020. Het gebruik van de /passive-optie maakt installaties eenvoudig. Met dank aan degene die die tip heeft geplaatst!
Om AnyCPU te gebruiken, moest ik zowel de ACE.OLEDB.12.0 2010 x32-engine als de ACE.OLEDB.16.0 x64-engines hebben geïnstalleerd. Op die manier kon Vstudio zowel x32- als x64-engines zien tijdens het compileren van “AnyCPU”. Ik zou de providerverbindingsreeks kunnen wijzigen in ACE.OLEDB.12.0 voor x32-bewerking of in ACE.OLEDB.16.0 voor x64-bewerking. Beiden werkten prima.
Als u x86-buildinstellingen wilt gebruiken, moet u de 2010x32-database-engine EN de ACE.OLEDB.12.0verbindingsreeksprovider EN expliciete x86-buildinstellingen hebben om te werken met Office 365 x32 in januari 2020.
Antwoord 19
Ik had dit probleem bij het importeren van gegevens uit een Excel-bestand (xlsx) in een SQL Server-database met SSMS 2014.
De 2007 Office System Driver: Data Connectivity Componentsinstalleren deed de truc voor mij.
Antwoord 20
Ik heb een soortgelijk probleem wanneer we een Excel-bestand aan het lezen zijn.
Geschiedenis van het probleem:
We hebben onze applicatie onlangs gemigreerd van 32-bits naar 64-bits vanwege de geheugenvereisten. Daarvoor hebben we onze Windows 7 gemigreerd van 32-bit naar 64-bit. Maar toch hebben we 32-bit Office op onze machines geïnstalleerd.
daarom hadden we dit probleem tijdens het importeren van Excel-gegevens in de toepassing.
Oplossing,
Ik heb de 64-bits versie van de http:// www.microsoft.com/en-us/download/details.aspx?id=13255en geïnstalleerd met argument als,
AccessDatabaseEngine_x64.exe /passive
Zonder enige codewijziging wordt mijn probleem opgelost.
Opmerking:
Op 64-bits besturingssysteem en 64-bits kantoor werkte mijn functionaliteit prima zonder deze oplossing. Deze oplossing is alleen vereist als onze applicatie 64-bits draait op een 64-bits besturingssysteem waarop 32-bits Office is geïnstalleerd.
Antwoord 21
Gewoon downloaden & installeer de volgende Access DB-engine (X86 of X64: volgens uw machineconfiguratie) en zie de magie 🙂
https://www.microsoft.com/en -us/download/confirmation.aspx?id=13255
Antwoord 22
Ik volgde de instructies van anderen; het installeren van deze patch, het installeren van die patch en de Microsoft Access Database Engine 2010.
Mijn probleem was dat ik dezelfde bibliotheek (linq2sql) op 2 sites op mijn computer gebruik; 1 werkt en 1 niet.
Uiteindelijk ontdekte ik dat ik “32-bits toepassingen moest inschakelen” in de geavanceerde instellingen van de apppool voor mijn niet-werkende site.
Alles werkt nu goed.
Antwoord 23
kan deze stappen ook proberen
In de SQL-server,
1. Open één database
2.Klik in de optie ‘Server Obtect’
3.Klik in ‘Gelinkte servers’
4.Klik in ‘Aanbieders’
5.Klik rechts in ‘Microsoft.ACE.OLEDB.12.0’
6.Deselecteer alle opties en sluit
Antwoord 24
Vergeet niet om AccessDatabaseEnginete installeren op de server voor webapplicatie.
Antwoord 25
Ik had Microsoft Access Database Engine 2010 Redistributableal op mijn computer geïnstalleerd, maar kreeg nog steeds de fout Microsoft ACE OLEDB Provider.
Toen herinnerde ik me dat ik onlangs een upgrade naar Office 2016 had uitgevoerd, dus misschien moet ik proberen Microsoft Access Database Engine 2010 Redistributableopnieuw te installeren. En dat loste het probleem op mijn machine op.
Dus als je een upgrade naar een andere versie van MS Office hebt uitgevoerd of zelfs je MS Office hebt gerepareerd/opnieuw geïnstalleerd, probeer dan Microsoft Access Database Engine 2010 Redistributableopnieuw te installeren voordat je tijd verspilt met het zoeken naar andere oplossingen. Veel succes!
Antwoord 26
1.) Controleer uw verbindingsreeks met ConnectionStrings.com.
2.) Zorg ervoor dat de juiste database-engine is geïnstalleerd. Dit waren de twee database-engines die me hielpen.
Microsoft Access Database Engine 2010 Redistributable
2007 Office-systeemstuurprogramma: onderdelen voor gegevensconnectiviteit
3.) Er kan een probleem zijn met uw builddoelplatform dat “Elke CPU” is, het moet mogelijk “X86” zijn (Eigenschappen, Build, Platformdoel).
Antwoord 27
Als u deze foutmelding krijgt wanneer u ACE probeert te gebruiken vanuit een ASP.NET-toepassing, is de meest waarschijnlijke oorzaak dat u een van de 32-bits versies hebt geïnstalleerd. Standaard voert IIS op een 64-bits besturingssysteem toepassingen uit in een 64-bits werkproces. 64-bits processen kunnen geen 32-bits DLL’s laden. Wanneer een oproep wordt gedaan naar de ACE-provider, zal het 64-bits proces proberen een 64-bits DLL te vinden. Als het niet bestaat, krijg je de foutmelding die je hier heeft gebracht.
In dit geval heb je twee opties. Ten eerste kunt u de 64-bits versie van 2010 installeren. Als u de 2007 32-bits versie hebt geïnstalleerd, kunt u eenvoudig de 2010 64-bits versie ernaast installeren. Als u de 32-bits versie van 2010 hebt geïnstalleerd, moet u deze verwijderen en in plaats daarvan de 64-bits versie van 2010 downloaden en installeren. U kunt niet tegelijkertijd zowel de 32- als de 64-bits versie van de 2010-provider hebben geïnstalleerd. Als u de installatie uitvoert op uw ontwikkelmachine, kunt u ook worden beperkt door de bit-ness van bestaande Office-installaties.
De tweede optie is om de groep van toepassingen in IIS te wijzigen om 32-bits toepassingen mogelijk te maken. Als u de volledige versie van IIS gebruikt, kunt u hiervoor de beheertool gebruiken (Configuratiescherm Systeembeheer Internet Information Services (IIS) Manager).
Raadpleeg voor meer begrip hieronder link
Antwoord 28
Ik kreeg deze foutmelding bij het importeren van gegevens uit een Excel-bestand in MS-SQL.
De provider was al geïnstalleerd (64-bit) en dit verbaasde me waarom het niet werkte.
Dus alles wat ik deed was de Import/Export-applicatie die hier werd gebruikt, d.w.z. de .EXE, vinden.
En ik vond het op
C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe
Ik heb toen de .exe rechtstreeks uitgevoerd om de gegevensimport uit te voeren. En het werkte!
Antwoord 29
Ik had verschillende keren geprobeerd om “Microsoft Access Database Engine 2010 (Engels) te verwijderen en vervolgens te installeren en tot slot de opmerking – “Optie gewijzigd van ELKE CPU naar x86” en het werkte.
Bedankt voor die opmerking – ik ben nu weer aan het werk na 2 weken frustratie.