Microsoft.Jet.OLEDB.4.0 Provider is not registered on the local machine

Scriam codul unei aplicații ASP.NET care să citească dintr-o bază de date Microsoft Office Access 2010. Aplicația rula pe Windows 7 în variantă 64-bit. Și m-am trezit cu eroarea de mai sus – “Microsoft.Jet.OLEDB.4.0 Provider is not registered on the local machine”. Normal că aveam Jet 4.0 – vine implicit pe sistem…

Cauza pare a fi provider-ul (sau driverul, conectorul) Microsoft.Jet.OLEDB.4.0, care are numai versiune pe 32-bit, nu și pe 64-bit. Cică eroarea apare doar pe sisteme 64-bit – suficient, având în vedere că Windows Server 2008 R2 deja apare doar în 64-bit. Acest Jet este engine-ul din spatele bazelor de date Access.

Unii dădeau drept soluție să faci o setare la nivelul Application Pool al aplicației: mergi la IIS Manager (sau IIS Management Console), la Application Pools, selectezi aia sub care rulează aplicația ta, right-click pe Advanced Settings și pui Enable 32-bit Applications = true. Merge, dar suspectez că oricum vei putea citi doar mai vechile fișiere Access .MDB, nu și noul format Access .AccDb.

Soluția cea mai elegantă a venit tot de pe site-ul IIS.NET (că Google m-a băgat în bălării, discuții vechi de ani de zile). Mai exact de aici. Pe scurt:

  1. Descarci și instalezi gratuit de pe site-ul Microsoft versiunea potrivită de Microsoft Access Database Engine 2010 Redistributable.
  2. În ConnectionString-ul de conectare OleDb la baza de date Access, nu vei mai folosi “Provider=Microsoft.Jet.OLEDB.4.0;” ci Provider=Microsoft.ACE.OLEDB.12.0;
    Pentru conectare ODBC, cică “Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file”.

Cică același provider poate fi folosit când programezi aplicații ce se conectează la fișiere Excel 2010 (probabil și Excel 2007).

În fine, ca notă de subsol, ăștia de la Microsoft recomandă totuși SQL Server Express Edition, în locul fișierelor Access, ca motor pentru baze de date în aplicații mici și vioaie. Și eu prefer SQL Server Express, dar uneori trebuie să preiei date din Access, deh.

One thought on “Microsoft.Jet.OLEDB.4.0 Provider is not registered on the local machine

  1. Am patit-o si eu anul trecut, cand lucram la un site al unora si unul din taskuri era trecerea la noul "Access".Mesaj mai cretin nu am mai vazut la M$! (Desi concurenta e acerba. :))Sa-ti zica "Microsoft.Jet.OLEDB.4.0 Provider is not registered", cand de fapt cauta driver pentru Access-ul nou (OLEDB.12.0), e chiar super misto.Amin.

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s