Solved - The Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine

There are a number of reasons why you might become "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine" mistake when attempting to connect to either an accdb or an xlsx file, depending on what you lot are doing. This article discusses some of the causes and provides solutions starting time for uses involving ASP.Cyberspace, and then looking at other awarding uses.

Kickoff, I volition manipulate with the near obvious reason for the error, and that is that the provider hasn't been registered on the machine on which the application is running. The ACE provider is not installed on Windows operating systems past default. You accept to install it. The ACE provider is available in three forms: Microsoft Office Access database engine 2007 , the Microsoft Access Database Engine 2010 Redistributable and the 2016 Distributable . The 2007 version is just available as a 32-bit component whereas the 2010 and 2016 versions offer both 32 and 64-bit options. You need to be careful which option you lot choose, considering a incorrect pick here is the most frequent cause for the error message.

ASP.Cyberspace Applications

If yous get this error when trying to utilize ACE from an ASP.NET application, the most likely cause is that you lot have installed either one of the 32-bit versions. By default, IIS on a 64-bit operating system will run applications in a 64-bit worker process. 64-scrap processes cannot load 32-flake DLLs. When a call is made to the ACE provider, the 64 bit procedure will attempt to locate a 64-bit DLL. If it doesn't be, y'all get the error bulletin that brought you here.

In this case you have two options. Starting time, y'all tin install the 2010 or 2-16 64-scrap version. If you take the 2007 32-bit version installed, yous can but install the 64-bit version aslope information technology. If y'all have the 32-fleck version of 2010 or 2016 installed, you need to uninstall it and download and install the 64-bit version instead. You cannot have both the 32- and 64-chip versions of the same provider installed at the same time. If you lot are performing the installation on your development automobile, you may also be constrained by the bit-ness of whatsoever existing Function installations.

The second option is to change the application pool in IIS to enable 32-bit applications. If you are using the full version of IIS, you can use the management tool to do this (Control Panel » Administrative Tools » Net Data Services (IIS) Director).

Click on Awarding Pools in the left pane, then select the application pool for the relevant site in the eye pane, and click Advanced Settings on the right:

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

Locate the Enable 32-bit Applications entry and change False to True:

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

IIS Express

IIS Limited 7.5 merely comes as a 32-bit application. Therefore the 64-bit version of ACE will not work with it. IIS 8 or greater offer both 32-bit and 64-bit options, so you tin download that instead. At that place is no option to enable 32-chip applications in current versions of IIS Express. Even so, by default, Visual Studio uses the 32-bit version. You can change this from inside Visual Studio past going to Tools » Options » Projects And Solutions » Spider web Projects » General, and choosing the appropriate selection circled below:

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

If you launch IIS Express from the control line instead, navigate to the correct folder instead. The 32-bit version is installed by default in C:\Program Files (x86)\IIS Express. The 64-bit version is installed in C:\Program Files\IIS Express. Y'all can make up one's mind which version of IIS Limited is running from the Processes tab in Task Director:

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

The 32-bit version is denoted by *32 every bit part of the Image Name.

Other Applications

Visual Studio is only available every bit a 32-bit application. If you try to connect to Admission from inside Visual Studio, y'all must accept a 32-bit version of ACE installed. The same is true of SQL Server Information Tools, which y'all might use for creating SSIS packages. For other applications, y'all should check the scrap-ness to ensure that you lot have an appropriate version of the provider installed. As I have already mentioned, it is perfectly possible to have both a 32-bit and a 64-flake version installed at the same fourth dimension, so long equally they are non both from the 2010 download site.

Alternatives

It might exist that you do not have admission to the IIS server to either install a version of ACE or make changes to the enable 32 bit applications. You tin utilize the JET provider instead, which withal forms part of the Windows operating arrangement. This is only useful if you lot tin can enable 32-bit applications (or have information technology enabled) just can't install anything on the server. You volition need to resave your accdb files to mdb files (Access 2002-2003 Database) instead. This will be fine if you haven't used any of the features that were added to Access in 2007 such as BLOBs and multi-valued fields. Excel files tin can simply exist resaved as Excel 97-2003 Workbook (.xls). Alternatively, you tin use the EPPlus library to work with Excel files in .xlsx format. It's costless, open up source and tin can be deployed with your application, removing the need to install anything.

Summary

This article looked at the reasons behind the 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine fault, and discussed the fact that most problems are caused by the wrong bit-ness of the selected component. The article discussed strategies for resolving the result, and possible workarounds if it is not possible to put the proposed resolutions into upshot.