Il provider "Microsoft.ACE.OLEDB.12.0" non è registrato sul computer locale


442

Sto cercando di ottenere dati da un file Excel su un evento clic pulsante. La mia stringa di connessione è:

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

Quando faccio clic sul pulsante, viene visualizzato il seguente errore:

Il provider "Microsoft.ACE.OLEDB.12.0" non è registrato sul computer locale.

Non ho idea di come risolvere questo problema. Il mio sistema operativo è Windows 7.


5
Solo un commento tangenziale: usare OLEDB per leggere un file Excel è una tecnologia antica, molto lenta e, come hai scoperto, richiede l'installazione manuale di pacchetti extra sul tuo computer di destinazione. (Concesso, la domanda è stata posta nel 2011.) Piuttosto usa ClosedXml (disponibile su NuGet) che funziona immediatamente.
Shaul Behr,

3
@ShaulBehr Sarebbe stato bello, ma ClosedXml funziona solo con file .xlsx, non .xls
Jimmy,

2
Se stai importando in SQL Server puoi eseguire questa query da ssms: esegui master.dbo.xp_enum_oledb_providers Ti dirà quali provider pensa di avere. In passato avevo sia Microsoft.ACE.OLEDB.16.0 che Microsoft.ACE.OLEDB.12.0, ma quando ho provato a importare i dati, ho ottenuto lo stesso "non registrato sul tuo computer locale" dell'OP, sia per Excel 16 e formati di file Excel 2007 (rispettivamente oledb.16.0 e oledb.12.0). Ha senso tagliare le perdite e rinunciare al software Microsoft a questo punto.
user1040323,

1
@ user1040323, execute master.dbo.xp_enum_oledb_providersti dice cosa c'è sul server e non sul tuo computer locale .
Nathan Goings,

1
Qui quello che dovrebbe funzionare; - È: non molto documentato, ma ho trovato un modo per installare entrambe le versioni a 32 e 64 bit. Basta aggiungere l'argomento della riga di comando "/ passivo" al comando: "C: \ percorso directory \ AccessDatabaseEngine_x64.exe" / passivo
TaW

Risposte:


533

Bene, devi installarlo. Stai cercando:


44
Ho scaricato questi componenti e non hanno funzionato per me, ho dovuto scaricare il motore di database di Microsoft Access 2010 ridistribuibile da qui: microsoft.com/en-in/download/details.aspx?id=13255 Sono sicuro che è perché sto usando MS Office 2013. Grazie per avermi indicato nella giusta direzione.
Sizons,

5
Ho dovuto installare il motore del database di accesso e il driver di Office System 2007: componenti di connettività dei dati qui microsoft.com/en-us/download/confirmation.aspx?id=23734 per farlo funzionare.
Chris,

6
La mia situazione, tutto funzionava bene, poi all'improvviso ha iniziato a ricevere questo errore. Quindi cosa potrebbe essere successo a causare questo? Nessun codice modificato.
eetawil,

21
Nel mio caso, ho dovuto passare da "Any CPU" a x64 per abbinare la mia architettura.
Rob Sedgwick,

2
Jack lo Squartatore si riferisce alla soluzione fornita nella risposta stessa, non ai commenti. L'installazione del 2007 Office System Driver: Data Connectivity Componentsrisolto il problema immediatamente.
Silkfire,

156

Una versione a 64 bit di "Microsoft Access Database Engine 2010 ridistribuibile" che ti consentirà di utilizzare il provider "Microsoft.ACE.OLEDB.12.0" è disponibile qui:
http://www.microsoft.com/en-us/ download / Details.aspx? id = 13255

Se usi il download dalla risposta accettata, dovrai compilare per x86, come sottolineato da @ backtestbroker.com.


18
Se si utilizza VS 2012, assicurarsi anche che la casella di controllo "Prefer 32-bit" sia deselezionata in Proprietà >> Costruzione >> Configurazione generale del progetto.
Devstruck,

3
Sto usando VS 2008 (non chiedere) e questa soluzione non ha funzionato fino a quando non ho letto il consiglio di post_erasmus e impostato 'Platform Target' su x64 in Proprietà >> Build >> Configurazione generale della mia applicazione. Ordinati, grazie!
Risorsa

1
Il collegamento in questa risposta consente anche di scaricare e installare una versione a 32 bit. Anche se ho Windows 7 a 64 bit, IIS Express di Visual Studio 2013 funziona in modalità 32 bit per impostazione predefinita e avevo già alcuni componenti di Office 2013 installati a 32 bit, quindi l'installazione a 32 bit è ciò di cui avevo bisogno.
Eric Barr,

2
Con questa risposta, devo anche impostare "Abilita applicazioni a 32 bit" nel Pool di applicazioni su False.
iowatiger08

1
Questo mi ha aiutato a risolvere il mio problema. La mia app VS 2019 viene compilata utilizzando Qualsiasi CPU che genera una libreria x64. Avevo installato la versione a 32 bit di Office 2013 che mi impediva di installare Access Engine x64. Dopo aver installato la versione x64 di Office sono stato quindi in grado di installare il motore x64 e ora tutto funziona. Inferno DLL sopravvive.
Mike Lowery,

74

a seconda dell'app (32/64 bit) utilizzando la connessione che è possibile installare

Sommario:

  • tutti gli uffici dal 2007-2016 contengono il provider "Microsoft.ACE.Oledb.12.0"
  • a seconda dell'architettura dell'applicazione, selezionare il motore di runtime appropriato (32/64) 6
  • controlla i tuoi provider con il comando powershell dalla shell a 32 e 64 bit :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
  • e vedrai quale provider può utilizzare il tuo sistema

la lunga storia: le stringhe possono essere trovate con http://live.sysinternals.com/strings.exe

per esempio. su un sistema a 64 bit con driver a 32 bit installati

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"

anche nel prossimo ufficio 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

troverai le corde

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.OLEDB.12.0

Office 2013 viene fornito anche con csi.dll

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

che contiene " Microsoft.ACE.OLEDB.15.0 "

e 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

che ha la versione " Microsoft.ACE.OLEDB.16.0 "


Ho riscontrato questo errore in VS2015 usando Nuget LinqToExcel. A quanto pare, poiché avevo installato l'x64 ACE, dovevo costruire esplicitamente per x64 (Configuration Manager), invece di scegliere come target qualsiasi CPU.
subsci

Powershell ha mostrato che "Microsoft.ACE.Oledb.12.0" era già installato. Tuttavia, l'installazione del pacchetto Access 2007 (aka Driver di sistema di Office 2007: Data Connectivity Components ) mi ha fatto iniziare. Già sul mio sistema: Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy

6
Lo script di PowerShell che informa su quale versione è installata è geniale! Grazie @Bernhard
Rob Bowman

un po 'offtopico ma questo semplice PowerShell è per i tuoi driver ODBC:Get-OdbcDriver | select Name,Platform
Bernhard

Ciò ha risolto il problema per me su una macchina server a 64 bit scaricando il runtime di 32-BIT Access 2016. Fondamentalmente inizia con 32 bit per essere al sicuro (succedono cose brutte quando provi a passare a 64 bit nel progetto).
Eric Mutta,

45

La prima cosa che devi controllare è la configurazione di build della tua applicazione.

  • Se il progetto è stato creato con la piattaforma x86 , per risolvere il problema è necessario installare i seguenti pacchetti sul computer:

    1. Per utilizzare il provider "Microsoft.ACE.OLEDB.12.0" è necessario installare prima il Motore di database di Microsoft Access 2010 ridistribuibile , questa installazione è disponibile all'indirizzo: http://www.microsoft.com/download/en/details.aspx ? id = 13255 .

      Al termine dell'installazione, prova a eseguire l'applicazione, se ciò risolve il problema, in caso contrario, vai al passaggio 2.

    2. Il prossimo passo è una soluzione inspiegabile, che funziona per Office 2010, anche se sono i componenti di connettività dei dati di Office 2007. Non sono del tutto sicuro del perché funzioni, ma funziona e si è dimostrato che funzioni in quasi tutti i casi. È necessario installare il driver di Office System 2007: componenti di connettività dei dati , questa installazione è disponibile all'indirizzo: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

      Al termine dell'installazione, prova a eseguire l'applicazione, questo dovrebbe risolvere il problema.

  • Se stai tentando di eseguire un'applicazione creata con la piattaforma x64 o AnyCPU , ti consiglio di convalidare prima che funzioni come previsto nella piattaforma x86. Nel caso in cui non venga eseguito su quella piattaforma x86, eseguire i passaggi nella prima parte e verificare che funzioni come previsto.

    Ho letto che i driver di MS Access incluso il driver del database OLEDB funzionano solo con la piattaforma x86 ed è incompatibile con la piattaforma x64 o AnyCPU. Ma questo sembra essere falso. Ho verificato che la mia applicazione era in esecuzione durante la creazione di x86, quindi ho installato il motore di database di Access utilizzando il flag passivo.

    1. Prima scarica il file localmente Puoi scaricare l'installazione qui: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. Installazione utilizzando il prompt dei comandi con il flag '/ passive'. Nel prompt dei comandi eseguire il comando seguente: 'AccessDatabaseEngine_x64.exe / passive'

    Dopo questi 2 passaggi sono riuscito a eseguire la mia applicazione dopo aver compilato la configurazione build x64 o AnyCPU. Questo sembrava risolvere il mio problema.

Nota: l'ordine dei passaggi sembra fare la differenza, quindi seguire di conseguenza.


5
Ho avuto il problema che stavo passando da un'applicazione a 32 bit a 64 bit e non funzionava più. La seconda parte delle tue istruzioni funziona perfettamente! Il flag / passive consente l'installazione anche con un Microsoft Office a 32 bit.
Freddy,

1
Suggerimento: estrarre AccessDatabaseEngine_x64.exe in una cartella per ottenere i file AceRedist.msi e Data.cab. Aprire il prompt di cmd in modalità amministratore ed eseguire il AceRedist.msi /passive.
Jeremy Thompson,

1
Molte grazie. La prima opzione ha funzionato per me. Ricordo la seccatura che avevo di fronte per disinstallare Office a 32 bit e solo dopo aver installato Office a 64 bit questo problema veniva risolto in precedenza. Ma questo componente da ufficio a 64 bit ha fatto invece la magia.
Biki,

A causa di 2 punti ho risolto. Grazie mille. Devo installare questo microsoft.com/download/en/confirmation.aspx?id=23734 .
SENA,

33

Ho riscontrato questo errore / eccezione in Visual Studio 2010 quando ho modificato la mia build nella finestra di dialogo Gestione configurazione da "x86" a "Qualsiasi CPU". Questo driver di database OLEDB capisco funziona solo in x86 e non è compatibile a 64 bit. La modifica della configurazione di build su x86 ha risolto il problema per me.


5
OLEDB è compatibile con x64. Può funzionare su QUALSIASI piattaforma, NON SOLO x86, ma anche su Qualsiasi CPU. Vedi la risposta completa di seguito:
stackoverflow.com/a/32760211/3637582

Sotto il debug dell'applicazione in Visual Studio aiuta effettivamente a scegliere x86 invece di qualsiasi CPU / x64 nel gestore della configurazione.
noto

25

Ho installato i driver MS e ancora non ha funzionato per me. Poi ho trovato questo post sul blog che ha risolto il problema. Leggilo lì, altrimenti usa queste due immagini (collegate da quel post) come il riassunto TLDR:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Stavo per pubblicare questo come mio contributo. Questo era il mio problema Modificherei questa impostazione IIS ieri poiché un progetto nella mia soluzione è stato compilato x86, quindi suppongo che classificherà l'intero programma come 32-bit.
Lee,

Il mio server esegue @ 64 bit ma i componenti di MS Office installati sono 32 bit. Questo ha risolto il mio problema. Grazie.
MarceloBarbosa,

Che cosa incredibilmente difficile da far funzionare :(, mi chiedo se potresti scriverlo in PowerShell e integrarlo in una sorta di script di installazione automatica del server?
David Rogers,

@DavidRogers probabilmente, ma non sono un esperto di PS, quindi non guardarmi per questo! ;-)
Shaul Behr,

@ShaulBehr Speriamo che questo fornisca approfondimenti agli altri, Il comando specifico che ho usato era (in una finestra powershell / cmd elevata): "C: \ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64: true "
David Rogers,


15

Per tutti quelli ancora colpiti da questo.

Ho ricevuto l'errore ...

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

... come descritto dall'OP, Shailesh Sahu.

Ho Windows 7 a 64 bit.

Il mio problema è all'interno degli script di PowerShell , ma sta usando una stringa di connessione, simile al post dell'OP, quindi spero che i miei risultati possano essere applicati a C #, PowerShell e qualsiasi altra lingua basata sul driver "Microsoft.ACE.OLEDB".

Ho seguito le istruzioni su questo thread del forum MS: http://goo.gl/h73RmI

Ho provato prima a installare la versione a 64 bit , quindi a installare la versione a 32 bit di AccessDatabaseEngine.exe da questa pagina http://www.microsoft.com/en-us/download/details.aspx?id=13255

Ma ancora nessuna gioia.

Ho quindi eseguito il codice seguente in PowerShell (dal sito di SQL Panda http://goo.gl/A3Hu96 )

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

... che mi ha dato questo risultato (ho rimosso altre fonti di dati per brevità) ...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

Come puoi vedere, ho Microsoft.ACE.OLEDB. 15 .0 (quindici) non Microsoft.ACE.OLEDB. 12 .0 (dodici)

Quindi, ho modificato la mia stringa di connessione su 15 e ha funzionato.

Quindi, un breve frammento di PowerShell per dimostrare come codificare soft la versione ...

$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`";"

modificato per scegliere l'ultima versione di ACE, se più di una

Eventualmente, chiunque lo trovi può ora controllare per vedere quale versione di OLEDB è installata e utilizzare il numero di versione appropriato.


Ciao, sto cercando di leggere i fogli Excel con PowerShell. File di Excel archiviati in una raccolta documenti di SharePoint e non è presente alcuna installazione di Excel sul server. Ho Windows Server 2008 R2. Ho installato il driver di sistema di Office: Componenti di connettività dati tuttavia quando eseguo la query non riesco a vedere Microsoft.ACE.OLEDB. Hai un'idea a riguardo? e qualche suggerimento? Grazie in anticipo.
doganak,

3
Ho trovato la risposta Avevo chiesto al nostro amministratore di sistema di installare MS Access Database Engine. Aveva installato la versione x86. Quando eseguo nuovamente la query in PowerShell x86 ho visto ACE.OLEDB.
doganak,

Fantastico codice PowerShell. Ho avuto la versione a 32 bit (che non è stata visualizzata nell'elenco di PowerShell), che mi ha impedito di installare quella a 64 bit. Dopo aver rimosso la versione a 32 bit, sono stato in grado di installare la versione a 64 bit senza il messaggio "Hai già componenti di Office a 32 bit ...". La versione a 64 bit è stata visualizzata nell'elenco di PowerShell e la mia app ha iniziato a funzionare.
Doppelganger,

13

Sebbene siano state fornite molte risposte, il problema riscontrato non è stato ancora menzionato.

  • Il mio scenario: applicazione a 64 bit, Win10-64, Office 2007 a 32 bit installato.
  • L'installazione del programma di installazione a 32 bit AccessDatabaseEngine.exe come scaricato da MS riporta un esito positivo, ma NON è installato, come verificato con lo script Powershell di uno dei post qui sopra.

  • L'installazione del programma di installazione a 64 bit AccessDatabaseEngine_X64.exe ha riportato un messaggio di errore scioccante:

inserisci qui la descrizione dell'immagine

La soluzione molto semplice è stata trovata qui su un sito Autodesk. Aggiungi semplicemente il parametro / passivo alla stringa della riga di comando, in questo modo:

AccessDatabaseEngine_X64.exe / passivo

Installazione eseguita correttamente, il driver OleDb ha funzionato.

I file Excel che sto elaborando con OleDb sono di tipo xlsx, prodotti con EPPlus 4.5 e modificati con Excel 2007.


1
Potrei installare AccessDatabaseEngine_X64.exe nei modi consueti ma ho usato il parametro passivo per installare equilavent a 32 bit (AccessDataBaseEngine.exe). Quindi, potrei finalmente collegarmi al database di Access da Visual Studio 2019.
VolkanOzcan

10

È necessario modificare la piattaforma della soluzione da "Qualsiasi CPU" a "x86" o "x64" in base al testimone dell'installazione dell'ufficio.

I passaggi sono indicati di seguito:

  1. Fare clic con il tasto destro sul File soluzione in Esplora soluzioni: inserisci qui la descrizione dell'immagine

    1. Fai clic su Configuration Manager.
    2. Fai clic sul menu a discesa Piattaforma attiva, se x86 è già presente, selezionalo, altrimenti fai clic su Nuovo. inserisci qui la descrizione dell'immagine

    3. Seleziona x86 o x64 dal menu a discesa della nuova piattaforma: inserisci qui la descrizione dell'immagine

Compila ed esegui la tua applicazione.



6

Sono stato in grado di risolvere questo problema seguendo i passaggi in questo articolo: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered- on-the-local-machine

Il punto chiave per me era questo:

Durante il debug con IIS,

per impostazione predefinita, Visual Studio utilizza la versione a 32 bit. Puoi cambiarlo da Visual Studio andando su Strumenti »Opzioni» Progetti e soluzioni »Progetti Web» Generale e scegliendo

"Utilizza la versione a 64 bit di IIS Express per siti Web e progetti"

Dopo aver verificato quell'opzione, quindi aver impostato la destinazione della piattaforma del mio progetto su "Any CPU" (l'avevo impostato su x86 da qualche parte nel processo di risoluzione dei problemi), sono stato in grado di superare l'errore.


1
Grazie, molte altre risposte sono per scendere a 32 bit, ma questo ti aiuta a passare a 64 bit.
illinoistim,

Grazie mille questo è quello che sto cercando.
Manoj Kalluri,

6

Se stai eseguendo il debug di un progetto Web, assicurati solo di IIS Express esegue il sia in esecuzione a 32 o 64 bit a seconda delle impostazioni del progetto.

Vai a

Strumenti> Opzioni> Progetti e soluzioni> Progetti Web

e da lì selezionare (o deselezionare) "Usa versione a 64 bit di IIS Express ..."


1
Wow molte ore tryng altre soluzioni, solo la tua correzione! grazie
Hernaldo Gonzalez il

5

Verificare innanzitutto quale versione di microsoft.ace.oledb.12.0 è installata nel sistema.

Controlla sotto il percorso C: \ Programmi \ File comuni \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - 64 bit è installato

Controlla sotto il percorso C: \ Programmi (x86) \ File comuni \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - Il bit x86 è installato

Se (x86) è installato, utilizzare la piattaforma della soluzione di modifica di Configuration Manager in x86, per x64 passare a x64.

Se non disponibile, installare utilizzando il link seguente

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


3

syp_dino,

La soluzione per me come suggerito per il provider "Microsoft.ACE.OLEDB.12.0" non è registrata sul computer locale " è quella di cambiare la piattaforma della soluzione attiva da" Qualsiasi CPU "a" x86 ".

Quando ho eseguito questi passaggi, ricostruito la soluzione, afferrato il file EXE e inserito nella rete, tutto ha funzionato senza problemi sulla macchina Windows 7 a 64 bit.


Puoi eseguirlo su qualsiasi piattaforma, NON SOLO x86, ma anche su Qualsiasi CPU. Vedere la mia risposta qui sotto: stackoverflow.com/a/32760211/3637582
Merav Kochavi

3

Ho riscontrato questo problema durante il tentativo di importare dati da un file Excel (xlsx) in un DB SQL Server utilizzando SSMS 2014.

Il driver di Office System 2007: l' installazione di Data Connectivity Components mi ha aiutato.


... e se non funziona, prova a scegliere una "Versione Excel" diversa dall'elenco a discesa della schermata "Scegli origine dati". stackoverflow.com/a/56171883/283895
tgolisch

@Taran Link non è disponibile
evry1falls il

Sembra il file, ma non posso confermare download.cnet.com/…
Taran

3

Ho affrontato questo stesso problema. Vai alle proprietà della soluzione e modifica qualsiasi CPU in x86, penso che farà il lavoro.


3

fai questo 2 passi: 1. in questo menu: progetto -> proprietà del tuo progetto ... -> Build: deseleziona "preferisci 32 bit" 2. in connectionString: scrivi cuotes prima e dopo Extended properties, in questo modo: Extended Properties = ' Excel 12.0 Xml; HDR = YES '

                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;

Deselezionando "Prefer 32-bit" sembrava funzionare per me con Microsoft Access Database Engine 2010 ridistribuibile installato.
IT Delinquent

Deselezionai 'Prefer 32 bit' ed era attivo e funzionante !!!
user1584253

3

Queste configurazioni hanno funzionato nel gennaio del 2020 sulla mia nuova build di macchine:

(1 - solo x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installato con / argomento passivo, impostazioni di compilazione VStudio impostate su x64 in modo esplicito, con la seguente stringa di connessione: Provider = Microsoft.ACE.OLEDB.16.0; Origine dati = D: ... \ MyDatabase.accdb

(2 - x64 o x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installato con / argomento passivo, PLUS AccessDatabaseEngine 2010 (32 bit) installato con / argomento passivo, Impostazioni di build VStudio impostate su AnyCPU, con la seguente stringa di connessione: Provider = Microsoft.ACE.OLEDB.16.0; Origine dati = D: ... \ MyDatabase.accdb

(Solo 3 - x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32 bit) installato con / argomento passivo, impostazioni di compilazione VStudio impostate su x86, con la seguente stringa di connessione: Provider = Microsoft.ACE.OLEDB.12.0; Origine dati = D: ... \ MyDatabase.accdb

NOTE DI GUASTO

L'uso del provider x64 ACE.OLEDB.12.0 nella stringa di connessione non è riuscito con solo AccessDatabaseEngine_x64 2016 installato come sopra in (1).

L'uso di AnyCPU nelle impostazioni di compilazione di Visual Studio non è riuscito in (1). È richiesta l'impostazione x64. Forse perché AnyCPU significa che Vstudio deve vedere un provider ACE.OLEDB.nn.0 x32 al momento della compilazione.

Il motore x32 / passivo ACE.OLEDB.12.0 2016 NON si installava quando vedeva applicazioni x64 in giro. (L'installer ACE.OLEDB.12.0 2010 x32 / passivo ha funzionato.)

CONCLUSIONI

Per utilizzare le impostazioni di build x64, è necessario disporre del motore di database x64 2016 E ACE.OLEDB.16.0 di stringhe di connessione E delle impostazioni di build esplicite x64 per funzionare con Office 365 nel gennaio 2020. L'uso dell'opzione / passive semplifica l'installazione. Ringraziamo chiunque abbia pubblicato quel suggerimento!

Per utilizzare AnyCPU, dovevo installare sia il motore ACE.OLEDB.12.0 2010 x32 sia i motori ACE.OLEDB.16.0 x64. In questo modo Vstudio poteva vedere entrambi i motori x32 e x64 al momento della compilazione di "AnyCPU". Potrei cambiare la stringa di connessione del provider in ACE.OLEDB.12.0 per l'operazione x32 o in ACE.OLEDB.16.0 per l'operazione x64. Entrambi hanno funzionato bene.

Per utilizzare le impostazioni di compilazione x86, è necessario disporre del motore di database x32 2010 E del provider della stringa di connessione ACE.OLEDB.12.0 E delle impostazioni di compilazione esplicite x86 per funzionare con Office 365 x32 a gennaio 2020.


2

Ho un problema simile quando stiamo leggendo il file Excel.

Storia del problema:

Di recente abbiamo migrato la nostra applicazione da 32 a 64 bit a causa dei requisiti di memoria. Per questo abbiamo migrato Windows 7 da 32 bit a 64 bit. Ma abbiamo ancora installato l'ufficio a 32 bit sulle nostre macchine.

perché di questo abbiamo riscontrato questo problema durante l'importazione dei dati di Excel nell'applicazione.

Soluzione,

Ho scaricato la versione a 64 bit di http://www.microsoft.com/en-us/download/details.aspx?id=13255 e installato con argomento come,

AccessDatabaseEngine_x64.exe / passivo

Senza alcuna modifica del codice il mio problema viene risolto.

Nota:

Su sistemi operativi a 64 bit e Office a 64 bit, la mia funzionalità funzionava perfettamente senza questa correzione. Questa correzione è necessaria solo mentre la nostra applicazione è a 64 bit in esecuzione su un sistema operativo a 64 bit su cui è installato Office a 32 bit.


Ma Microsoft è contraria a questa soluzione. Pochi dei miei clienti osservano distorsioni in altri programmi di Office a causa di questa correzione.
Rahul Techie,


1

Ho seguito le istruzioni stabilite da altri; installando questa patch, installando quella patch e anche il Motore di database di Microsoft Access 2010.

Il mio problema era che sto usando la stessa libreria (linq2sql) in 2 siti sul mio computer; 1 funziona e 1 no.

Alla fine ho scoperto che dovevo "abilitare le applicazioni a 32 bit" nelle impostazioni avanzate dell'apppool per il mio sito non funzionante.

Ora funziona tutto bene.


1

puoi anche provare questi passaggi

In SQL Server, 1.Aprire una banca dati 2.Clic nell'opzione 'Server Obtect' 3.Clic in 'Server collegati' 4.Clic in 'Provider' 5.Clic Rigth in 'Microsoft.ACE.OLEDB.12.0' 6. Deseleziona tutte le opzioni e chiudi


1

Ricordarsi di installare AccessDatabaseEngine sul server per l'applicazione Web.


1

Ho avuto lo stesso problema ma in questo caso microsoft-ace-oledb-12-0-provider era già installato sulla mia macchina e funzionava bene per altre applicazioni sviluppate.

La differenza tra quell'applicazione e quella con cui ho avuto il problema era che le vecchie applicazioni erano in esecuzione su " Local IIS " mentre quella con errore era su " IIS Express (in esecuzione da Visual Studio"). Quindi quello che ho fatto è stato-

  1. Fare clic con il tasto destro su Nome progetto.
  2. Vai a Proprietà
  3. Vai alla scheda Web a destra.
  4. In Server selezionare Local IIS e fare clic sul pulsante Crea directory virtuale.
  5. Esegui nuovamente l'applicazione e ha funzionato.

1

Avevo già ridistribuibile il motore di database di Microsoft Access 2010 installato sul mio computer ma continuavo a ricevere il provider OLEDB ACE di Microsoft errore del .

Poi ho ricordato che di recente avevo eseguito l'aggiornamento a Office 2016, quindi, potrei provare a reinstallare Microsoft Access Database Engine 2010 ridistribuibile . E questo ha risolto il problema sulla mia macchina.

Quindi, se hai eseguito l'aggiornamento a versioni diverse di MS Office o hai persino riparato / reinstallato MS Office, prova a reinstallare Microsoft Access Database Engine 2010 ridistribuibile prima di perdere tempo con la ricerca di altre correzioni. In bocca al lupo!


1

1.) Verifica la stringa di connessione con ConnectionStrings.com .

2.) Assicurarsi di avere installato il motore di database corretto. Questi sono stati i due motori di database che mi hanno aiutato.

Motore di database di Microsoft Access 2010 ridistribuibile

Driver di Office System 2007: componenti di connettività dati

3.) Potrebbe essersi verificato un problema con la piattaforma di destinazione della build "Qualsiasi CPU", potrebbe essere necessario "X86" (Proprietà, Build, Platform Target).


Puoi eseguirlo su QUALSIASI piattaforma, NON SOLO 'x86', ma anche come 'Qualsiasi CPU' come 'x64'. Vedi la risposta completa di seguito:
stackoverflow.com/a/32760211/3637582

Ok, beh, non penso che sia stato il caso per me ... quindi vale comunque la pena ricordare che la piattaforma target di costruzione di qualcuno potrebbe essere parte del problema.
u8it

1

Se viene visualizzato questo errore quando si tenta di utilizzare ACE da un'applicazione ASP.NET, la causa più probabile è che sia stata installata una delle versioni a 32 bit. Per impostazione predefinita, IIS su un sistema operativo a 64 bit eseguirà le applicazioni in un processo di lavoro a 64 bit. I processi a 64 bit non possono caricare DLL a 32 bit. Quando viene effettuata una chiamata al provider ACE, il processo a 64 bit tenterà di individuare una DLL a 64 bit. Se non esiste, viene visualizzato il messaggio di errore che ti ha portato qui.

In questo caso hai due opzioni. Innanzitutto, è possibile installare la versione 2010 a 64 bit. Se hai installato la versione 2007 a 32 bit, puoi semplicemente installare la versione 2010 a 64 bit accanto ad essa. Se è installata la versione a 32 bit del 2010, è necessario disinstallarla e scaricare e installare invece la versione a 64 bit 2010. Non è possibile installare contemporaneamente entrambe le versioni a 32 e 64 bit del provider 2010. Se si sta eseguendo l'installazione sulla propria macchina di sviluppo, si potrebbe anche essere vincolati dal bit -ness di qualsiasi installazione di Office esistente.

La seconda opzione è quella di modificare il pool di applicazioni in IIS per abilitare le applicazioni a 32 bit. Se si utilizza la versione completa di IIS, è possibile utilizzare lo strumento di gestione per fare ciò (Pannello di controllo »Strumenti di amministrazione» Gestione Internet Information Services (IIS)).

Per ulteriori informazioni, consultare il link seguente


1

Ho ricevuto questo errore durante l'importazione di dati da un file Excel in MS-SQL. Il provider era già installato (a 64 bit) e questo mi ha sorpreso perché non funzionava. Quindi tutto ciò che ho fatto è stato individuare l'applicazione di importazione / esportazione utilizzata qui, ad esempio .EXE. E l'ho trovato a

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

Ho quindi eseguito direttamente il file .exe per eseguire l'importazione dei dati. E ha funzionato!


Ho avuto alcune versioni lì, SSMS deve usare quella sbagliata.
SteveCav

1

Questo ha funzionato per me in questo momento.

  1. Visita questa pagina, quindi scarica quel pacchetto appropriato per il tuo computer (AccessDatabaseEngine.exe o AccessDatabaseEngine_X64.exe)
  2. Installa quello.
  3. Buon divertimento ... I tuoi codici funzionano ora ...

Ma per il pacchetto dell'applicazione è possibile utilizzare una delle seguenti soluzioni:

  1. Vai in "C: \ Programmi (x86) \ File comuni \ microsoft shared" o "C: \ Programmi \ File comuni \ Microsoft Shared" e inserisci la directory "OFFICE14" nella stessa posizione del file del pacchetto.

O

  1. Allegare due progetti (nell'elemento 1) nel pacchetto di installazione.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.