Ошибка поставщик microsoft ace oledb 12 не зарегистрирован на локальном компьютере

These configurations worked in January of 2020 on my new machine build:

(1 — x64 only) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installed with /passive argument, VStudio build settings set to x64 explicitly, with the following connection string: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:…MyDatabase.accdb

(2 — x64 or x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installed with /passive argument, PLUS AccessDatabaseEngine 2010 (32bit) installed with /passive argument, VStudio build settings set to AnyCPU, with the following connection string: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:…MyDatabase.accdb

(3 — x32 only) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) installed with /passive argument, VStudio build settings set to x86, with the following connection string: Provider= Microsoft.ACE.OLEDB.12.0; Data Source=D:…MyDatabase.accdb

FAILURE NOTES

Using the ACE.OLEDB.12.0 x64 provider in the connection string failed with only the AccessDatabaseEngine_x64 2016 installed as above in (1).

Using AnyCPU in the visual studio build settings failed in (1). Setting x64 is required. Maybe this is because AnyCPU means that Vstudio must see an x32 ACE.OLEDB.nn.0 provider at compile time.

The ACE.OLEDB.12.0 2016 x32 /passive engine would NOT install when it saw x64 applications around. (The ACE.OLEDB.12.0 2010 x32 /passive installer worked.)

CONCLUSIONS

To use x64 build settings, you need to have the 2016 x64 database engine AND the ACE.OLEDB.16.0 connection-string provider AND explicit x64 build settings to work with Office 365 in January of 2020. Using the /passive option makes installations easy. Credit to whoever posted that tip!

To use AnyCPU, I needed to have both the ACE.OLEDB.12.0 2010 x32 engine and the ACE.OLEDB.16.0 x64 engines installed. That way Vstudio could see both x32 and x64 engines at «AnyCPU» compile time. I could change the provider connection string to ACE.OLEDB.12.0 for x32 operation or to ACE.OLEDB.16.0 for x64 operation. Both worked fine.

To use x86 build settings, you need to have the 2010 x32 database engine AND the ACE.OLEDB.12.0 connection-string provider AND explicit x86 build settings to work with Office 365 x32 in January of 2020.

Я покажу несколько вариантов решения этой проблемы. Но в начале кратко о возникающей проблеме.

Я использовал следующий вариант подключения к базе nookery.accdb

var conn = new OleDbConnection(@»Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:SQLnookery.accdb»);

               conn.Open();

Однако возникала ошибка «Поставщик «Microsoft.ACE.OLEDB.12.0″ не зарегистрирован на локальном компьютере».

Хотелось бы упомянуть что
accdb — формат файла является более новым и идет с 2010 версии офиса, mdb более старый и шел до 2007 включительно. Соответственно и подключений с более старой версией mdb не возникает, однако accdb такого сказать нельзя. Проблема сводиться к разрядности системы и установленной Microsoft Access. Когда вы его устанавливали у вас автоматически или вручную была установлена разрядность согласно вашей операционной системы. Однако могло быть и такое что вы ставили Microsoft Access 32 битную на 64 битную Windows. А теперь рассмотрим два решения этой проблемы:

Вам необходимо создать пустой проект и запустить следующий метод:

public void Information()

        {

            DataTable table = new OleDbEnumerator().GetElements();

            string inf = «»;

            foreach (DataRow row in table.Rows)

                inf +=row[«SOURCES_NAME»]+ «n»;

            MessageBox.Show(inf);

        }

Далее вам необходимо вызвать данным метод и проанализировать информацию.

И изменить целевую платформу в сборке на x86, а потом на x64. Посмотрев в информации под какую сборку у вас будет доступен поставщик.

Покажу на примере первоначально у меня целевая сборка была под Any CPU метод показал следующую информацию :

Посмотрев на информацию мы не обнаруживаем в ней Microsoft.ACE.OLEDB.12.0. Меняем целевую сборку на x86

Как видим результат остался неизменным, переключаемся на x64

Как мы видим появился доступный нам поставщик Microsoft.ACE.OLEDB.12.0 Для этого всего лишь требовалось сменить целевую платформу.

Необходимо так же добавить или установить в диспетчере конфигурации как показано ниже x64

Если выбора x64 нет, в этом окне так же выберите пункт добавить и соответственно добавьте выбор x64.

Так же необходимо поменять в проекте на x64

Вторым решением будет скачать 2007 Office System Driver ссылка

Таким образом мы рассмотрели два решения существующей проблемы с Поставщиком «Microsoft.ACE.OLEDB.12.0»

  • Remove From My Forums
  • Вопрос

  • Пытаюсь подключится к базе Access 2016 из приложения написанного на C# с помощью драйвера Microsoft ACE OLEDB 12.0. Получаю: «Поставщик «Microsoft.ACE.OLEDB.12.0″ не зарегистрирован на локальном компьютере.». Пытаюсь
    экспортировать таблицу MS SQL в Excel 2007-2013 через мастер экспорта/импорта, получаю тот же результат!

    Вкратце как пытался исправить…

    1) Microsoft Access Database Engine Redistributable ставил, 64 бита, всех версий, так как Windows 10 64 бит.

    2) Office 2016 перестанавливал, и до установки Microsoft
    Access Database Engine Redistributable, и после.

    Версия Windows 10.0.17134 Сборка 17134.

Ответы

  • причём тут порядок иморта в excel???

    Это не Вы писали:

    Пытаюсь экспортировать таблицу MS SQL в Excel 2007-2013 через мастер экспорта/импорта, получаю тот же результат!

    Я же писал, подключаюсь с приложения на c#

    Обратитесь к разработчику приложения.

    • Предложено в качестве ответа

      17 октября 2018 г. 19:08

    • Отменено предложение в качестве ответа
      ВиталийК
      17 октября 2018 г. 21:52
    • Помечено в качестве ответа
      Dmitriy VereshchakMicrosoft contingent staff, Moderator
      8 августа 2019 г. 6:34

  • Здравствуйте Виталий,

    Пожалуйста не дублируйте Ваши темы.

    лучше помогите с проблемой!

    Пожалуйста, просто выполняйте указание модератора, не надо пререкаться. Иначе вас забанят и будете обращаться сами к себе.

    Что до вашей проблемы, то это типично разнобой в разрядности приложения и установленного провайдера. Скорее всего провайдер 32 битный, а приложение 64 битное. Для решения попробуйте установить разрядность в свойствах проекта в 32 бита (x86 или AnyCPU,
    32 bit preferred).

    Объяснение как это сделать и что это значит тут:

    http://blogs.microsoft.co.il/sasha/2012/04/04/what-anycpu-really-means-as-of-net-45-and-visual-studio-11/


    This posting is provided «AS IS» with no warranties, and confers no rights.

Как решать эту проблему ?

private void btnImport_Click(object sender, EventArgs e)
{
    // Вызываем окно проводника
    OpenFileDialog opfd = new OpenFileDialog();

    // Если выбрали, то загружаем
    if (opfd.ShowDialog(this) == DialogResult.OK) {

        if (opfd.FileName.EndsWith(".xlsx")) {
            // on crée une connexion vers le fichier excel reste à trouver son chemin et de modifier la partie rouge...
            OleDbConnection Excel = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.xlsx;
            Extended Properties=""Excel 12.0 Xml;HDR=YES"";");

            OleDbCommand cmd = new OleDbCommand("select * from [Feuil1$]", Excel); // l'étoile (*) permet d'importer l'ensemble du fichier Excel
            // j'ouvre la connexion 
            Excel.Open();
            DataTable tableau = new DataTable();
            OleDbDataReader Reader = cmd.ExecuteReader();
            tableau.Load(Reader);
            dataGridView1.DataSource = tableau;
        }
    }
}

  • c#
  • excel
  • oledb

MSDN.WhiteKnight's user avatar

задан 16 ноя 2018 в 21:17

Alexander's user avatar

AlexanderAlexander

3241 золотой знак2 серебряных знака13 бронзовых знаков

3

  • Это не помогает.

    16 ноя 2018 в 21:56

1 ответ

Возможные причины данной ошибки:

  1. Не установлен Microsoft Access 2010 Database Engine или полноценный Microsoft Access

  2. Разрядность приложения не совпадает с разрядностью установленного Database Engine (или Access).

ответ дан 19 ноя 2018 в 3:16

MSDN.WhiteKnight's user avatar

MSDN.WhiteKnightMSDN.WhiteKnight

20.1k6 золотых знаков37 серебряных знаков81 бронзовый знак

NOTE: i have found hundreds of threads on this error, yet they all seem to suggest using the ‘Microsoft access database engine’. however for whatever reason (even though its made for 64-bit office) this did not work on my machine so i was forced
to find an alternate method.

this resolution works with:

  • 64-bit Windows 7
  • 64-bit MS Office
  • Please reply to this thread if it worked for you so i can make this a full «compatibility list»

trying to connect to an Access database in visual studio but keep getting this error?

try installing this first: http://www.microsoft.com/download/en/details.aspx?id=13255

however if, like me, that doesnt work for you, try the following method:

NOTE: this DOES work for office 2010 even though it is for 2007 office, dont ask me why it just does :)

1. download and install this: http://www.microsoft.com/download/en/confirmation.aspx?id=23734

2. in VS click add data source, follow the wizard and enjoy! :)

P.S thanks to everyone that helped me at my original thread: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ebb05600-055a-44c4-8cd3-d33a79878b23

i did give up and tried storing to text files, but oh my god was that a bad choice! so i came back to trying to resolve this and managed to after HOURS AND HOURS of searching.

this thread is for all of those people being given a hard time connecting to Access databases!

Please share your opinions/ problems below!

  • Edited by

    Saturday, December 10, 2011 12:53 PM

  • Ошибка посредник подключений к удаленному рабочему столу не готов к rpc
  • Ошибка последовательной связи фуджитсу
  • Ошибка последовательного порта usb убедитесь что контроллер подключен попробуйте обновить страницу
  • Ошибка последовательного порта pci
  • Ошибка последовательного порта 11 системе не удается найти указанный путь