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

442

Я пытаюсь получить данные из файла Excel по событию нажатия кнопки. Моя строка подключения:

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

Когда я нажимаю на кнопку, я получаю следующую ошибку:

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

Я понятия не имею, как это исправить. Моя операционная система - Windows 7.

Шайлеш Саху
источник
5
Просто тангенциальный комментарий: использование OLEDB для чтения файла Excel является древней технологией, очень медленной, и, как вы обнаружили, требует установки дополнительных пакетов вручную на целевой машине. (Конечно, вопрос был задан в 2011 году.) Скорее используйте ClosedXml (доступный на NuGet), который работает прямо из коробки.
Шауль Бер
3
@ShaulBehr Было бы неплохо, но ClosedXml работает только для файлов .xlsx, а не .xls
Джимми
2
Если вы импортируете в Sql Server, вы можете выполнить этот запрос из ssms: execute master.dbo.xp_enum_oledb_providers. Он скажет вам, какие поставщики, по его мнению, у вас есть. Это устарело, у меня были и Microsoft.ACE.OLEDB.16.0, и Microsoft.ACE.OLEDB.12.0, но когда я попытался импортировать данные, я получил то же «не зарегистрировано на локальном компьютере», что и OP, для обоих Excel 16 и форматы файлов Excel 2007 (oledb.16.0 и oledb.12.0 соответственно). На этом этапе имеет смысл сократить ваши потери и отказаться от программного обеспечения Microsoft.
user1040323
1
@ user1040323, execute master.dbo.xp_enum_oledb_providersсообщает, что находится на сервере, а не на вашем локальном компьютере .
Натан
1
Вот тот, который должен работать; - Это: не совсем задокументировано, но я нашел способ установить как 32-битную, так и 64-битную версии. Просто добавьте аргумент командной строки «/ passive» к команде: «C: \ путь к каталогу \ AccessDatabaseEngine_x64.exe» / passive
TaW

Ответы:

533

Ну, вам нужно установить его. Ты ищешь:

Вариант
источник
44
Я скачал эти компоненты, и они не работали для меня, мне пришлось скачать Microsoft Access Database Engine 2010, который можно распространять здесь: microsoft.com/en-in/download/details.aspx?id=13255 Я уверен, что это потому, что я Я использую MS Office 2013. Спасибо, что указали мне в правильном направлении, хотя.
Сизонс
5
Мне пришлось установить механизм доступа к базе данных и драйвер системы Office 2007: компоненты подключения к данным здесь microsoft.com/en-us/download/confirmation.aspx?id=23734, чтобы заставить его работать.
Крис
6
В моей ситуации все работало нормально, потом внезапно начала появляться эта ошибка. Так, что могло случиться, чтобы вызвать это? Код не изменился.
eetawil
21
В моем случае мне пришлось переключиться с «Любого процессора» на x64, чтобы соответствовать моей архитектуре.
Роб Седжвик
2
Джек Потрошитель относится к решению, предоставленному в самом ответе, а не в комментариях. Установка 2007 Office System Driver: Data Connectivity Componentsрешена немедленно.
шелковый огонь
156

64-разрядная версия «Microsoft Access Database Engine 2010 Redistributable», которая позволит вам использовать поставщика «Microsoft.ACE.OLEDB.12.0», доступна здесь:
http://www.microsoft.com/en-us/ скачать / details.aspx? ID = 13255

Если вы используете загрузку из принятого ответа, вам нужно будет собрать для x86, как указано @ backtestbroker.com.

rsbarro
источник
18
При использовании VS 2012 также убедитесь, что флажок «Предпочитать 32-разрядный» не установлен в свойствах проекта >> Сборка >> Общая конфигурация.
devstruck
3
Я использую VS 2008 (не спрашиваю), и это решение не работало, пока я не прочитал подсказку post_erasmus и не установил для параметра Platform Target значение x64 в разделе Свойства >> Сборка >> Общая конфигурация моего приложения. Сортировка, спасибо!
Ресурс
1
Ссылка в этом ответе также позволяет загрузить и установить 32-разрядную версию. Несмотря на то, что у меня 64-разрядная версия Windows 7, IIS Express для Visual Studio 2013 по умолчанию работает в 32-разрядном режиме, и у меня уже были установлены некоторые компоненты Office 2013 в 32-разрядной версии, поэтому 32-разрядная установка - это то, что мне нужно.
Эрик Барр
2
В этом ответе мне также нужно установить «Включить 32-битные приложения» в пуле приложений на «Ложь».
iowatiger08
1
Это помогло решить мою проблему. Мое приложение VS 2019 скомпилировано с использованием любого процессора, в результате чего появилась библиотека x64. У меня была установлена ​​32-битная версия Office 2013, которая помешала мне установить x64 Access DB Engine. После установки x64 версии Office я смог установить движок x64, и теперь все работает. DLL ад живет дальше.
Майк Лоури
74

в зависимости от приложения (32 / 64bit), используя соединение, которое вы можете просто установить

Резюме:

  • все офисы 2007-2016 годов содержат провайдера "Microsoft.ACE.Oledb.12.0"
  • в зависимости от архитектуры вашего приложения выберите подходящий движок (32/64) 6
  • проверьте своих провайдеров с помощью powershell-команды из 32- и 64-битной оболочки :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
  • и вы увидите, какой провайдер может использовать ваша система

длинная история: строки можно найти с http://live.sysinternals.com/strings.exe

например. в 64-битной системе с установленными 32-битными драйверами

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"

даже в предстоящем офисе 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

вы найдете строки

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013 поставляется также с csi.dll

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

который содержит " Microsoft.ACE.OLEDB.15.0 "

и офис 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

которая имеет версию " Microsoft.ACE.OLEDB.16.0 "

Бернхард
источник
Я получил эту ошибку в VS2015 с помощью Nuget LinqToExcel. Оказывается, потому что у меня был установлен x64 ACE, мне пришлось явно собирать для x64 (Configuration Manager), вместо того, чтобы ориентироваться на любой процессор.
Subsci
Powershell показал, что Microsoft.ACE.Oledb.12.0 уже установлен. Однако установка пакета Access 2007 (также известный как драйвер системы Office 2007: компоненты для подключения к данным ) заставила меня начать работу. Уже в моей системе: Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy
6
Скрипт PowerShell, который сообщает, какая версия установлена, гениален! Спасибо @Bernhard
Роб Боуман
немного оффтоп, но этот простой PowerShell предназначен для ваших драйверов ODBC:Get-OdbcDriver | select Name,Platform
Бернхард
Это решило проблему для меня на 64-битном сервере, загрузив 32-битную версию Access 2016. В основном, начните с 32-битной системы, чтобы быть в безопасности (плохие вещи случаются, когда вы пытаетесь переключиться на 64-битную архитектуру в проекте).
Эрик Мутта
45

Первое, что вам нужно проверить, это конфигурация сборки вашего приложения.

  • Если вы создали свой проект на платформе x86 , то для решения вашей проблемы вы должны установить на свой компьютер следующие пакеты:

    1. Чтобы использовать поставщика Microsoft.ACE.OLEDB.12.0, сначала необходимо установить распространяемый компонент Microsoft Access Database Engine 2010 ; эта установка доступна по адресу: http://www.microsoft.com/download/en/details.aspx. ? id = 13255 .

      После завершения установки попробуйте запустить приложение, если это решит проблему, если нет, перейдите к шагу 2.

    2. Этот следующий шаг - необъяснимый обходной путь, который работает для Office 2010, хотя это и есть Компоненты подключения к данным Office 2007. Я не совсем уверен, почему это работает, но это работает, и это было доказано, что работает почти во всех случаях. Вам необходимо установить драйвер системы Office 2007: компоненты подключения к данным , эта установка доступна по адресу: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

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

  • Если вы пытаетесь запустить приложение, созданное на платформе x64 или AnyCPU , я бы рекомендовал сначала проверить, что оно работает должным образом на платформе x86. Если он не работает на этой платформе x86, выполните действия, описанные в первой части, и проверьте, что он работает должным образом.

    Я читал, что драйверы MS Access, включая драйвер базы данных OLEDB, работают только на платформе x86 и несовместимы с платформой x64 или AnyCPU. Но это, похоже, не соответствует действительности. Я подтвердил, что мое приложение работало при сборке x86, затем я установил Access Database Engine, используя пассивный флаг.

    1. Сначала загрузите файл локально. Вы можете скачать установку здесь: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. Установка с использованием командной строки с флагом / passive. В командной строке выполните следующую команду: 'AccessDatabaseEngine_x64.exe / passive'

    После этих двух шагов мне удалось запустить приложение после сборки в конфигурации сборки x64 или AnyCPU. Это оказалось, чтобы решить мою проблему.

Примечание: порядок шагов, кажется, имеет значение, поэтому, пожалуйста, следуйте соответствующим образом.

Мерав Кохави
источник
5
У меня была проблема, что я переключался с 32-битного приложения на 64-битное, и оно больше не запускалось. Вторая часть ваших инструкций работает отлично! Пассивный / флаг позволяет устанавливать даже с 32 - битной Microsoft Office.
Фредди
1
Совет: Извлеките файл AccessDatabaseEngine_x64.exe в папку, чтобы получить файлы AceRedist.msi и Data.cab. Откройте командную строку в режиме администратора и выполните команду AceRedist.msi /passive.
Джереми Томпсон
1
Большое спасибо. Первый вариант работал для меня. Я помню, с какими трудностями я столкнулся при удалении 32-разрядного Office, и только после установки 64-разрядного Office эта проблема была исправлена ​​ранее. Но этот 64-битный офисный компонент сделал волшебство вместо этого.
Бики,
Из-за 2 пункта я исправил. Большое спасибо. Мне нужно установить этот microsoft.com/download/en/confirmation.aspx?id=23734 .
СЕНА
33

Я получил эту ошибку / исключение в Visual Studio 2010, когда я изменил свою сборку в диалоговом окне Configuration Manager с «x86» на «Любой процессор». Этот драйвер базы данных OLEDB, который я понимаю, работает только в x86 и не является 64-битной совместимой. Изменение конфигурации сборки обратно на x86 решило проблему для меня.

timodius
источник
5
OLEDB совместим с x64. Он может работать на любой платформе, а не только на x86, но также и на любом процессоре. Смотрите полный ответ ниже: stackoverflow.com/a/32760211/3637582
Мерав Кохави
При отладке приложения в Visual Studio фактически помогает выбрать x86 вместо любого CPU / x64 в диспетчере конфигурации.
ничего не известно
25

Я установил драйверы MS, и он все еще не работал для меня. Тогда я нашел этот пост в блоге, который решил проблему. Прочтите его там, иначе используйте эти два изображения (ссылки из этого поста) в качестве суммарного значения TLDR:

введите описание изображения здесь

введите описание изображения здесь

Шауль Бер
источник
Собирался опубликовать это как мой вклад. Это была моя проблема. Я изменил этот параметр IIS вчера, так как один проект в моем решении был скомпилирован x86, поэтому я предполагаю, что он будет классифицировать всю программу как 32-битную.
Ли
Мой сервер работает на 64 битах, но установленные компоненты MS Office 32 бит. Это решило мою проблему. Спасибо.
MarceloBarbosa
Какое невероятно трудное для работы :(, интересно, не могли бы вы написать сценарий в powershell и просто интегрировать его в какой-нибудь сценарий автоматической настройки сервера?
Дэвид Роджерс
@DavidRogers, возможно, но я не эксперт в PS, так что не обращайте на меня внимания! ;-)
Шауль Бер
@ShaulBehr Надеюсь, что это даст понимание другим, я использовал конкретную команду (в окне повышенного уровня powershell / cmd): "C: \ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64: true "
Дэвид Роджерс
16

Если вы используете 64-разрядную версию, но у вас по-прежнему возникают проблемы даже после установки AccessDatabaseEngine, см. Этот пост , он решил проблему для меня.

т.е. вам нужно установить этот AccessDatabaseEngine

Aximili
источник
15

Для всех тех, кто еще пострадал от этого.

Я получаю ошибку ...

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

... как описано в ОП, Шайлеш Саху.

У меня 64 битная Windows 7.

Моя проблема в сценариях PowerShell , но я использую строку подключения, аналогичную посту OP, поэтому, надеюсь, мои выводы могут быть применены к C #, PowerShell и любому другому языку, использующему драйвер «Microsoft.ACE.OLEDB».

Я следовал инструкциям на этой ветке форума MS: http://goo.gl/h73RmI

Сначала я попытался установить 64-разрядную версию, а затем установить 32-разрядную версию AccessDatabaseEngine.exe с этой страницы http://www.microsoft.com/en-us/download/details.aspx?id=13255.

Но все равно нет радости.

Затем я запустил приведенный ниже код в PowerShell (с сайта SQL Panda http://goo.gl/A3Hu96 )

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

... который дал мне этот результат (для краткости я удалил другие источники данных) ...

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

Как видите, у меня есть Microsoft.ACE.OLEDB. 15 .0 (пятнадцать) не Microsoft.ACE.OLEDB. 12 0,0 (двенадцать)

Итак, я изменил строку подключения до 15, и это сработало.

Итак, быстрый фрагмент PowerShell, демонстрирующий, как программировать версию ...

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

исправлено, чтобы выбрать последнюю версию ACE, если более одного

Надеюсь, любой, кто найдет это, сможет проверить, какая версия OLEDB установлена, и использовать соответствующий номер версии.

TechSpud
источник
Привет, я пытаюсь читать листы Excel с PowerShell. Файлы Excel хранятся в библиотеке документов SharePoint, и на сервере нет установки Excel. У меня Windows Server 2008 R2. Я установил Office System Driver: Компоненты подключения к данным, однако, когда я запускаю ваш запрос, я не вижу Microsoft.ACE.OLEDB. У вас есть идея об этом? а какие-нибудь предложения? Заранее спасибо.
Доганак
3
Я нашел ответ. Я попросил нашего системного администратора установить MS Access Database Engine. Он установил версию x86. Когда я снова запустил запрос в PowerShell x86, я увидел ACE.OLEDB.
Доганак
Отличный код PowerShell. У меня была 32-разрядная версия (которая не отображалась в списке PowerShell), которая помешала мне установить 64-разрядную версию. После удаления 32-разрядной версии я смог установить 64-разрядную версию без сообщения «у вас уже есть 32-разрядные компоненты Office ...». 64-разрядная версия появилась в списке PowerShell, и мое приложение начало работать.
Двойник
13

Хотя было дано много ответов, проблема, с которой я столкнулся, еще не упоминалась.

  • Мой сценарий: 64-разрядное приложение, Win10-64, 32-разрядная версия Office 2007 установлена.
  • Установка 32-разрядного установщика AccessDatabaseEngine.exe, загруженного из MS, сообщает об успехе, но НЕ устанавливается, что подтверждается сценарием Powershell, приведенным выше.

  • При установке 64-разрядного установщика AccessDatabaseEngine_X64.exe появилось шокирующее сообщение об ошибке:

введите описание изображения здесь

Очень простое решение было найдено здесь, на сайте Autodesk. Просто добавьте параметр / passive в строку командной строки, например так:

AccessDatabaseEngine_X64.exe / passive

Установка прошла успешно, драйвер OleDb сработал.

Файлы Excel, которые я обрабатываю с помощью OleDb, относятся к типу xlsx, созданы в EPPlus 4.5 и изменены в Excel 2007.

мистифицировать
источник
1
Я мог установить AccessDatabaseEngine_X64.exe обычными способами, но я использовал пассивный параметр для установки 32-битного equilavent (AccessDataBaseEngine.exe). Затем я наконец смог подключиться к базе данных Access из Visual Studio 2019.
VolkanOzcan
10

Вам необходимо изменить платформу решений с «Любой ЦП» на «x86» или «x64» в зависимости от разрядности установки в офисе.

Шаги приведены ниже:

  1. Щелкните правой кнопкой мыши файл решения в обозревателе решений: введите описание изображения здесь

    1. Нажмите на диспетчере конфигурации.
    2. Нажмите на активную платформу. Если x86 уже существует, выберите его, иначе нажмите New. введите описание изображения здесь

    3. Выберите x86 или x64 из раскрывающегося списка новой платформы: введите описание изображения здесь

Скомпилируйте и запустите ваше приложение.

мохит буса
источник
6

Если установленный «AccessDatabaseEngine» по-прежнему не помогает, ниже приведено решение:

Вам нужно изменить Active Solution Platform с «Любой процессор» на «x86».

OLEDB-провайдер не зарегистрирован на локальном компьютере

С CodeProject.com

syp_dino
источник
Вы можете запустить его на ЛЮБОЙ платформе, НЕ ТОЛЬКО «x86», но также под «любым процессором» и «x64». Смотрите полный ответ ниже: stackoverflow.com/a/32760211/3637582
Мерав Кохави
6

Мне удалось это исправить, выполнив действия, описанные в этой статье: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered- на-местной-машина

Ключевым моментом для меня было это:

При отладке с IIS,

по умолчанию Visual Studio использует 32-разрядную версию. Вы можете изменить это в Visual Studio, перейдя в Инструменты »Параметры» Проекты и решения »Веб-проекты» Общие и выбрав

«Используйте 64-битную версию IIS Express для веб-сайтов и проектов»

После проверки этой опции, затем установив целевую платформу моего проекта обратно на «Любой процессор» (где-то в процессе устранения неполадок я установил его на x86), я смог преодолеть ошибку.

Кен Джонсон
источник
1
Спасибо, большинство других ответов предназначены для перехода на 32 бит, но это поможет вам перейти на 64 бит.
Иллинойстим
Большое спасибо, это то, что я ищу.
Манодж Каллури
6

Если вы отлаживаете веб-проект, просто убедитесь, что IIS Express работает в 32- или 64-разрядном режиме в зависимости от настроек вашего проекта.

Перейти к

Инструменты> Параметры> Проекты и решения> Веб-проекты

и оттуда отметьте (или снимите флажок) «Использовать 64-разрядную версию IIS Express ...»

Альберт Захия
источник
1
Ух ты, много часов пробуешь другие решения, только твое исправление! спасибо
Эрнальдо Гонсалес
5

Сначала проверьте, какая версия microsoft.ace.oledb.12.0 установлена ​​в вашей системе.

Проверьте ниже путь C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - установлен 64-битный

Проверьте ниже путь C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - установлен бит x86

Если (x86) установлен, то с помощью диспетчера конфигурации измените платформу решения на x86, для x64 - на x64.

Если нет в наличии, установите по ссылке ниже

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

Шубхам Тивари
источник
3

syp_dino,

Решение для меня, как вы предложили для провайдера «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере », заключается в изменении платформы Active Solution Platform с« Любой ЦП »на« x86 ».

Когда я выполнил эти шаги, перестроил решение, взял EXE и поместил в сеть, все работало на 64-битной машине с Windows 7.

Севрон Гхи
источник
Вы можете запустить его на любой платформе, НЕ ТОЛЬКО x86, но также и на любом процессоре. Смотрите мой ответ ниже: stackoverflow.com/a/32760211/3637582
Мерав Кохави
3

У меня была эта проблема при попытке импортировать данные из файла Excel (xlsx) в БД SQL Server с использованием SSMS 2014.

2007 Office System Driver: Компоненты подключения данных установки сделал трюк для меня.

Таран
источник
... и если это не сработает, попробуйте выбрать другую «версию Excel» из выпадающего списка экрана «выбор источника данных». stackoverflow.com/a/56171883/283895
tgolisch
@ Таран Ссылка недоступна
evry1falls
Это похоже на файл, но я не могу подтвердить download.cnet.com/…
Таран,
3

Я столкнулся с этой же проблемой. Перейдите в Свойства решения и измените Любой процессор на x86, я думаю, что он будет работать.

Д-р Шахриар
источник
3

выполните это 2 шага: 1. в этом меню: проект -> свойства вашего проекта ... -> Build: снимите флажок «предпочесть 32-битный» 2. в connectionString: пишите комментарии до и после расширенных свойств, например: Extended Properties = ' Excel 12.0 Xml; HDR = ДА '

                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;
Шариф Лотфи
источник
Снятие отметки «Предпочитать 32-разрядную версию», похоже, мне помогло, когда был установлен Microsoft Access Database Engine 2010 Redistributable.
ИТ-преступник
Я снял флажок «Предпочитать 32-битный», и он был запущен и работает !!!
user1584253
3

Эти конфигурации работали в январе 2020 года на моей новой машине:

(Только 1 - x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 установлен с аргументом / passive, параметры сборки VStudio явно установлены на x64 со следующей строкой подключения: Provider = Microsoft.ACE.OLEDB.16.0; Источник данных = D: ... \ MyDatabase.accdb

(2 - x64 или x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016, установленный с аргументом / passive, PLUS AccessDatabaseEngine 2010 (32 бита), установленный с параметром / passive, для параметров сборки VStudio установлено значение AnyCPU, со следующей строкой подключения: Provider = Microsoft.ACE.OLEDB.16.0; Источник данных = D: ... \ MyDatabase.accdb

(Только 3 - x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit), установленный с аргументом / passive, для параметров сборки VStudio задано значение x86 со следующей строкой подключения: Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = D: ... \ MyDatabase.accdb

ЗАМЕТКИ ОТКАЗА

Не удалось использовать поставщик x64 ACE.OLEDB.12.0 в строке подключения, а только AccessDatabaseEngine_x64 2016, установленный как указано выше в (1).

Использование AnyCPU в настройках сборки Visual Studio не удалось в (1). Установка х64 обязательна. Возможно, это связано с тем, что AnyCPU означает, что Vstudio должен видеть поставщика x32 ACE.OLEDB.nn.0 во время компиляции.

ACE.OLEDB.12.0 2016 x32 / passive engine НЕ будет установлен, когда он увидит приложения x64. (Установщик ACE.OLEDB.12.0 2010 x32 / passive работал.)

ВЫВОДЫ

Чтобы использовать параметры сборки x64, вам необходимо иметь ядро базы данных x64 2016 года и поставщик строки подключения ACE.OLEDB.16.0 И явные параметры сборки x64 для работы с Office 365 в январе 2020 года. Использование параметра / passive упрощает установку. Благодарим того, кто опубликовал этот совет!

Чтобы использовать AnyCPU, мне нужно было установить как ACE.OLEDB.12.0 2010 x32 engine, так и ACE.OLEDB.16.0 x64 engine. Таким образом, Vstudio мог видеть как x32, так и x64 движки во время компиляции AnyCPU. Я мог бы изменить строку подключения провайдера на ACE.OLEDB.12.0 для операции x32 или на ACE.OLEDB.16.0 для операции x64. Оба работали нормально.

Чтобы использовать параметры сборки x86, вам нужно иметь ядро базы данных x32 2010 года и поставщик строки подключения ACE.OLEDB.12.0 И явные параметры сборки x86 для работы с Office 365 x32 в январе 2020 года.

Kevin
источник
2

У меня есть похожая проблема, когда мы читаем файл Excel.

История проблемы:

Мы недавно перенесли наше приложение из 32-разрядного в 64-разрядное из-за требования к памяти. Для этого мы перенесли нашу Windows 7 из 32-битной в 64-битную версию. Но все же мы установили 32-битный офис на наших машинах.

из-за этого у нас возникла эта проблема при импорте данных Excel в приложение.

Решение,

Я скачал 64-битную версию http://www.microsoft.com/en-us/download/details.aspx?id=13255 и установил с аргументом как,

AccessDatabaseEngine_x64.exe / passive

Без какого-либо изменения кода моя проблема будет решена.

Замечания:

На 64-битной ОС и 64-битном офисе моя функциональность работала нормально без этого исправления. Это исправление требуется только тогда, когда наше приложение работает на 64-битной ОС, на которой установлен 32-битный офис.

Rahul Techie
источник
Но Microsoft против этого решения. Из-за этого исправления мало кто из моих клиентов наблюдает искажения в других программах Office.
Rahul Techie
1

Я следовал инструкциям, изложенным другими; установка этого патча, установка этого патча, а также Microsoft Access Database Engine 2010.

Моя проблема заключалась в том, что я использую одну и ту же библиотеку (linq2sql) на 2 сайтах на моей машине; 1 работает, а 1 нет.

В конце концов я обнаружил, что мне пришлось «включить 32-битные приложения» в расширенных настройках приложения для моего нерабочего сайта.

Теперь все отлично работает.

Объявления
источник
1

также можете попробовать эти шаги

В SQL Server: 1.Откройте одну базу данных. 2.Нажмите в параметре «Обнаружение сервера». 3.Нажмите в «Связанные серверы». 4.Нажмите в «Поставщики». 5.Нажмите Rigth в «Microsoft.ACE.OLEDB.12.0». 6.Отключите все опции и закройте

Диего Кастро
источник
1

Не забудьте установить AccessDatabaseEngine на сервере для веб-приложения.

Sosha
источник
1

У меня была та же проблема, но в этом случае поставщик microsoft-ace-oledb-12-0 уже был установлен на моей машине и работал нормально для других приложений, разработанных.

Разница между этим приложением и тем, с которым у меня возникла проблема, заключалась в том, что старые приложения работали на « локальном IIS », тогда как приложение с ошибкой было на « IIS Express (запущенном из Visual Studio»). Так что я сделал ...

  1. Щелкните правой кнопкой мыши по названию проекта.
  2. Перейти к свойствам
  3. Перейдите на веб-вкладку справа.
  4. В разделе «Серверы» выберите «Локальный IIS» и нажмите кнопку «Создать виртуальный каталог».
  5. Запустите приложение еще раз, и оно заработало.
Netstarter
источник
1

У меня был база данных Microsoft Access Engine 2010 Redistributable уже установлен на моей машине , но по - прежнему получать поставщик Microsoft ACE OLEDB ошибки.

Затем я вспомнил, что недавно обновился до Office 2016, поэтому, возможно, мне следует попробовать переустановить Microsoft Access Database Engine 2010 Redistributable . И это решило проблему на моей машине.

Итак, если вы обновили MS Office до другой версии или даже отремонтировали / переустановили MS Office, попробуйте переустановить Microsoft Access Database Engine 2010 Redistributable, прежде чем тратить время на поиск других исправлений. Удачи!

Сагар
источник
1

1.) Проверьте строку подключения с ConnectionStrings.com .

2.) Убедитесь, что у вас установлен правильный движок базы данных. Это были два движка базы данных, которые помогли мне.

Microsoft Access Database Engine 2010 распространяемый

Драйвер системы Office 2007: компоненты подключения к данным

3.) Возможно, проблема в том, что вашей целевой платформой сборки является «Любой процессор», возможно, это должен быть «X86» (Свойства, Сборка, Платформа Target).

u8it
источник
Вы можете запустить его на ЛЮБОЙ платформе, НЕ ТОЛЬКО «x86», но также под «любым процессором» и «x64». Смотрите полный ответ ниже: stackoverflow.com/a/32760211/3637582
Мерав Кохави
Хорошо, хорошо, я не думаю, что это было так для меня ... так что все же стоит упомянуть, что чья-то целевая платформа сборки может быть частью проблемы.
u8it
1

Если вы получаете эту ошибку при попытке использовать ACE из приложения ASP.NET, наиболее вероятной причиной является то, что вы установили одну из 32-разрядных версий. По умолчанию IIS в 64-разрядной операционной системе будет запускать приложения в 64-разрядном рабочем процессе. 64-разрядные процессы не могут загружать 32-разрядные библиотеки DLL. Когда сделан вызов поставщику ACE, 64-битный процесс попытается найти 64-битную DLL. Если его не существует, вы получите сообщение об ошибке, которое привело вас сюда.

В этом случае у вас есть два варианта. Во-первых, вы можете установить 64-битную версию 2010 года. Если у вас установлена ​​32-битная версия 2007 года, вы можете просто установить вместе с ней 64-битную версию 2010 года. Если у вас установлена ​​32-разрядная версия 2010, вам нужно удалить ее, а вместо этого загрузить и установить 64-разрядную версию 2010. Нельзя одновременно устанавливать 32- и 64-разрядные версии поставщика 2010. Если вы выполняете установку на своем компьютере разработчика, вы также можете быть ограничены разрядностью любых существующих установок Office.

Второй вариант - изменить пул приложений в IIS, чтобы включить 32-разрядные приложения. Если вы используете полную версию IIS, вы можете использовать для этого инструмент управления (Панель управления »Администрирование» Диспетчер служб IIS).

Для большего понимания, пожалуйста, обратитесь по ссылке ниже

Принц Антоний Г
источник
1

Я получил эту ошибку при импорте данных из файла Excel в MS-SQL. Поставщик уже был установлен (64-разрядный), и это удивило меня, почему он не работал. Поэтому все, что я сделал, это нашел приложение Import / Export, используемое здесь, т.е. .EXE. И я нашел это в

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

Затем я запустил .exe напрямую, чтобы выполнить импорт данных. И это сработало!

Chagbert
источник
Хм, у меня там было несколько версий, SSMS, должно быть, использует неправильную.
SteveCav
1

Это сработало для меня прямо сейчас.

  1. Перейдите на эту страницу и загрузите соответствующий пакет для вашего компьютера (AccessDatabaseEngine.exe или AccessDatabaseEngine_X64.exe).
  2. Установите это.
  3. Наслаждайся ... Твои коды сейчас работают ...

Но для вашего пакета приложений вы можете использовать любое из следующих решений:

  1. Перейдите в «C: \ Program Files (x86) \ Common Files \ microsoft shared» или «C: \ Program Files \ Common Files \ Microsoft Shared» и поместите каталог «OFFICE14» в то же место, где находится файл пакета.

Или

  1. Прикрепите два проекта (в пункте 1) в ваш установочный пакет.
Мухаммед Фатхи Мимфа
источник