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

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

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

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

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

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

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

И изменить целевую платформу в сборке на 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»

Обновлено: 05.01.2020 — 11:37

13 комментариев

Оставить комментарий
  1. Видео в студию!

  2. а то нихрена не понятно, какой проект, где писать метод, по идее должен быть создан класс раз проект пустой об этом ни слова не сказано! кроме того, так ничего не заработает, так как нет точки входа. так что видео в студию!

    1. Пустой проект подразумевает создания main метода а соответственно точки входа. Вам достаточно добавить метод с сайта и вызвать его, можно просто скопировать, содержимое метода в метод main и запустить проект. Я вроде как доступно разъяснил на сайте, достаточно вызвать метод представленный на сайте, метод как то можно вызвать иначе без main?

  3. Автору огромная благодарность! Полдня копал как подключить файл ACCDB к Вьюжал студии и наконец понял, где собака порылась 🙂
    Провайдер Microsoft.ACE.OLEDB.12.0 доступен в 64битном варианте, а Студия она ж 32х-битная до сих пор. Хочется в дизайн-тайм получить доступ, для этого похоже придётся поставтиь 32хбитный офис. Пичалька. Но автору всё равно спасибо!

    1. Пожалуйста. Рад был помочь!

  4. Сергей Мимопроходил

    Спасибо, помогло 🙂
    Хотелось из ВижуалСтудии подцепиться к файлу базы данных. Однако, 64-битная винда в паре с 64-битным офиосом показывали фигу. Сделал как автор велел, глянул и поменял офис на 32-битный. Всё заработало! Автору респект.

  5. Спасибо за информацию! Она натолкнула меня на верное решение (указано внизу комментария).
    Перевод проекта в 64-х, так как у вас рекомендовано, мне не дал положительного результата. У меня Win10 c установленной AccessRuntime2010, но VisualStudio2019 в упор не видела провайдер Microsoft.ACE.OLEDB.12.0 при любой разрядности целевой платформы. При 32-разрядной целевой платформе успешно работал Microsoft.Jet.OLEDB.4.0 и обеспечивал подключение к файлам mdb Access 2003. При переключении проекта с 32-х на 64-х исчезали оба провайдера, и ACE и Jet. Проблема решилась только после загрузки файла AccessDatabaseEngine.exe (ссылка ниже).
    https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255
    После инсталляции, провайдер Microsoft.ACE.OLEDB.12.0 стал доступен при любой разрядности целевой платформы, 32 и 64. Теперь при 32-разрядном проекте в среде VS2019 доступны на выбор оба провайдера — они оба успешно манипулируют файлами Access mdb версии 2002-2003.

    1. Отлично!!! Сработало!!! СПАСИБО!

      1. Пожалуйста!

    2. лучший!

  6. System.Data.OleDb.OleDbException: «Ядро СУБД Microsoft Access более не может открыть файл «C:\Users\Professional\Desktop\hgj» или записать в него данные. Файл уже открыт другим пользователем для монопольного доступа, либо требуется разрешение на просмотр и запись данных.»
    Че делать?

    1. Вам система пишет что фаил уже открыт, либо в приложении открыли или не закрыли соединение из приложения. Обычная перезагрузка пк поможет.

  7. Благодарю! Всё доходчиво объяснил!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.