Провайдер '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
Jimmy

2
Якщо ви імпортуєте на сервер Sql, ви можете запустити цей запит із 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.
користувач1040323

1
@ user1040323, execute master.dbo.xp_enum_oledb_providersповідомляє, що на сервері, а не на локальній машині .
Натан іде

1
Тут той, який повинен працювати; - Це: Не дуже задокументовано, але я знайшов спосіб встановити як 32-бітну, так і 64-бітну версії. Просто додайте до команди аргумент командного рядка "/ пасивний": "C: \ каталог шлях \ AccessDatabaseEngine_x64.exe" / пасивний
TaW

Відповіді:


532

Ну, вам потрібно його встановити. Ви шукаєте:


44
Я завантажив ці компоненти, і вони не працювали для мене, мені довелося завантажити перерозподільний файл Microsoft Access Database Engine 2010, який перерозподіляється звідси: microsoft.com/en-in/download/details.aspx?id=13255 Я впевнений, що це тому, що я Я використовую MS Office 2013. Дякую, що вказали на мене в правильному напрямку.
Сизони

5
Мені довелося встановити двигун бази даних доступу та драйвер Office 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, яка дозволить вам скористатися постачальником Microsoft.ACE.OLEDB.12.0, доступна тут:
http://www.microsoft.com/en-us/ завантажити / деталі.aspx? id = 13255

Якщо ви використовуєте завантаження з прийнятої відповіді, вам потрібно буде створити для x86, як вказував @ backtestbroker.com.


18
Якщо ви використовуєте VS 2012, також переконайтесь, що прапорець "Віддати перевагу 32-розрядному" не знімається в розділі Властивості >> Створення >> Загальна конфігурація.
devstruck

3
Я використовую VS 2008 (не запитуйте), і це рішення не працювало, поки я не прочитав підказку post_erasmus і не встановив "Платформа" на x64 в "Властивості >> Створення >> Загальна конфігурація моєї програми. Відсортовано, дякую!
Ресурс

1
Посилання у цій відповіді також дозволяє завантажити та встановити 32-бітну версію. Незважаючи на те, що у мене Windows 64 64-розрядний, IIS Express Visual Studio 2013 працює в 32-бітному режимі за замовчуванням, і я вже мав деякі компоненти Office 2013, встановлені в 32-розрядному, тому 32-бітна установка - те, що мені потрібно.
Ерік Барр

1
З цією відповіддю мені також потрібно встановити "Увімкнути 32-розрядні програми" в пулі програм на помилкові.
iowatiger08

1
Це допомогло вирішити мою проблему. Мій додаток VS 2019 компілюється за допомогою будь-якого процесора, що призводить до бібліотеки x64. У мене була встановлена ​​32-бітна версія Office 2013, яка не дозволила мені встановити x64 Access DB Engine. Після встановлення x64 версії Office я тоді зміг встановити двигун x64 і тепер все працює. DLL пекло живе далі.
Майк Лоурі

74

залежно від програми (32/64 біт) за допомогою з'єднання, яке ви могли просто встановити

Підсумок:

  • всі офіси 2007-2016 років містять постачальника "Microsoft.ACE.Oledb.12.0"
  • залежно від архітектури програми виберіть відповідний механізм виконання (32/64) 6
  • перевірте своїх постачальників у командних повноважень із обох 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 "

та Office 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 (він же і 2007 Office Driver System Components: Компоненти підключення даних ) мене підняв і зайшов. Вже в моїй системі: Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy

6
Сценарій PowerShell, який повідомляє, яка версія встановлена, геніальна! Дякую @Bernhard
Роб Боуман

трохи офтопік, але ця проста панель повноважень призначена для ваших драйверів ODBC:Get-OdbcDriver | select Name,Platform
Бернхард,

Це вирішило для мене проблему на 64-бітній серверній машині, завантаживши час виконання 32-BIT Access 2016. В основному почніть з того, щоб 32-розрядні були на безпечній стороні (погані речі трапляються, коли ви намагаєтесь переключити речі на 64-бітні в проекті).
Ерік Мутта

45

Перше, що вам потрібно перевірити - це конфігурація збірки вашої програми.

  • Якщо ви створили свій проект на платформі x86 , то для вирішення проблеми слід встановити наступні пакети на вашу машину:

    1. Для використання постачальника "Microsoft.ACE.OLEDB.12.0" спочатку слід спочатку встановити перерозподільний файл Microsoft Access Database Engine 2010 , ця установка доступна за адресою: http://www.microsoft.com/download/uk/details.aspx ? id = 13255 .

      Після завершення встановлення спробуйте запустити додаток, якщо це вирішує проблему чудово, якщо ні, перейдіть до кроку 2.

    2. Наступний крок - це незрозуміле вирішення, яке працює для Office 2010, навіть якщо це компоненти для з'єднання даних Office 2007. Я не зовсім впевнений, чому це працює, але це так, і це було доведено, що він працює майже у всіх випадках. Потрібно встановити драйвер системи Office 2007: Компоненти підключення даних ; ця установка доступна за адресою: http://www.microsoft.com/download/uk/confirmation.aspx?id=23734 .

      Після завершення встановлення спробуйте запустити свою програму, це повинно вирішити проблему.

  • Якщо ви намагаєтеся запустити додаток, побудований під платформою x64 або AnyCPU , я рекомендую спершу перевірити, чи працює він так, як очікувалося на платформі x86. У тому випадку, якщо він не працює під цією платформою x86, виконайте дії в першій частині та підтвердіть, що вона працює, як очікувалося.

    Я читав, що драйвери MS Access, включаючи драйвер бази даних OLEDB, працюють лише під платформою x86 і несумісні під платформою x64 або AnyCPU. Але це видається неправдивим. Я перевірив, що моя програма працює під час збирання x86, тоді я встановив двигун бази даних Access за допомогою пасивного прапора.

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

    Після цих 2 кроків мені вдалося запустити свою програму після побудови в конфігурації збірки x64 або AnyCPU. Це виявилося для вирішення мого питання.

Примітка: Порядок дій, схоже, має значення, тому, будь ласка, дотримуйтесь відповідно.


5
У мене виникла проблема, що я переходив з 32-бітного додатка на 64-бітний, і він більше не працював. Друга частина ваших інструкцій прекрасно працює! Прапор / пасивний дозволяє встановити навіть 32-розрядний Microsoft Office.
Фредді

1
Порада: Витягніть AccessDatabaseEngine_x64.exe у папку, щоб отримати файли AceRedist.msi та Data.cab. Відкрийте підказку cmd в режимі адміністратора та виконайте AceRedist.msi /passive.
Джеремі Томпсон

1
Дуже дякую. Перший варіант працював для мене. Я пам’ятаю, скільки клопотів мені довелося видалити 32-бітний Office і лише після встановлення 64-бітного офісу ця проблема виправлялася раніше. Але цей 64-розрядний офісний компонент замість цього здійснив магію.
Бікі

Через 2 бали я зафіксував. Дуже дякую. Мені потрібно встановити цей microsoft.com/download/en/confirmation.aspx?id=23734 .
SENA

33

Я отримав цю помилку / виняток у Visual Studio 2010, коли я змінив свою збірку в діалоговому вікні Configuration Manager з "x86" на "Any CPU". Цей драйвер бази даних OLEDB, наскільки я розумію, працює лише в x86 і не сумісний із 64 бітами. Зміна конфігурації збірки назад до x86 вирішила проблему для мене.


5
OLEDB сумісний з x64. Він може працювати під будь-якою платформою, НЕ ТІЛЬКИ x86, але як будь-який процесор. Дивіться повну відповідь нижче:
stackoverflow.com/a/32760211/3637582

Під час налагодження програми в Visual Studio це фактично допомагає вибрати x86 замість будь-якого процесора / x64 у менеджері конфігурації.
iknownothing

25

Я встановив драйвери MS, і це все ще не працювало для мене. Тоді я знайшов цей блог, який вирішив проблему. Прочитайте його там, інакше використовуйте ці два зображення (пов'язані з цієї публікації) як підсумки TLDR:

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

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


Я збирався розмістити це як мій внесок. Це була моя проблема. Я змінив би цей параметр IIS вчора, оскільки один проект у моєму рішенні був складений x86, тому я припускаю, що він буде класифікувати всю програму як 32-бітну.
Лі

Мій сервер працює @ 64 біт, але встановлений компонент MS Office - 32 біт. Це вирішило моє питання. Дякую.
MarceloBarbosa

Яка неймовірна складна робота :(, мені цікаво, чи зможете ви написати це сценарій у власному корпусі та просто інтегрувати його в якийсь сценарій автоматичного налаштування сервера?
Девід Роджерс

@DavidRogers, напевно, але я не знавець PS, тому не дивіться на мене! ;-)
Shaul Behr

@ShaulBehr Сподіваємось, це дає зрозуміти іншим. Конкретна команда, яку я використав, була (у підвищеному вікні посилання / cmd): "C: \ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64: true "
Девід Роджерс

16

Якщо ви використовуєте 64-розрядні, але все ще виникаєте проблеми навіть після встановлення AccessDatabaseEngine, дивіться цей пост , він вирішив проблему для мене.

тобто вам потрібно встановити цей AccessDatabaseEngine


15

Для всіх тих, хто все ще впливає на це.

Я отримую помилку ...

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

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

У мене 64-бітна Windows 7.

Моя проблема полягає в сценаріях PowerShell , але використовую рядок підключення, подібну до повідомлення ОП, тому, сподіваємось, мої висновки можуть бути застосовані до 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 (дванадцять)

Отже, я змінив свій рядок з'єднання до 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 встановлена, та використати відповідний номер версії.


Привіт, я намагаюся читати листи Excel з PowerShell. Файли Excel, що зберігаються в бібліотеці документів SharePoint, і на сервері немає встановлення Excel. У мене Windows Server 2008 R2. Я встановив драйвер Office System: Компоненти підключення до даних, проте, коли я запускаю ваш запит, не можна побачити Microsoft.ACE.OLEDB. Чи маєте ви про це уявлення? і будь-яка пропозиція? Заздалегідь спасибі.
dognak

3
Я знайшов відповідь. Я попросив нашого системного адміністратора встановити MS Access Database Engine. У нього була встановлена ​​версія x86. Коли я знову запустив запит у PowerShell x86, я побачив ACE.OLEDB.
dognak

Дивовижний код PowerShell. У мене була 32-бітна версія (яка не відображалась у списку PowerShell), яка не дозволила мені встановити 64-бітну. Після видалення 32-розрядної версії мені вдалося встановити 64-бітну версію без повідомлення "у вас вже є 32-бітні компоненти Office ...". 64-розрядна версія з’явилася у списку PowerShell, і моя програма почала працювати.
Doppelganger

13

Хоча було дано багато відповідей, проблема, з якою я стикався, ще не згадувалася.

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

  • Встановлення 64- бітного інсталятора AccessDatabaseEngine_X64.exe повідомило про шокуюче повідомлення про помилку:

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

Дуже просте рішення було знайдено тут, на сайті Autodesk. Просто додайте параметр / пасив до рядка командного рядка, як це:

AccessDatabaseEngine_X64.exe / pasive

Установка успішна, драйвер OleDb працював.

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


1
Я міг би встановити AccessDatabaseEngine_X64.exe звичайними способами, але я використав пасивний параметр для встановлення 32-бітного рівногаранту (AccessDataBaseEngine.exe). Потім я міг нарешті підключитися до бази даних Access від Visual Studio 2019.
VolkanOzcan

10

Вам потрібно змінити платформу рішення з "Будь-якого процесора" на "x86" або "x64" на основі розрядності установки в офісі.

Кроки наведені нижче:

  1. Клацніть правою кнопкою миші на файлі рішення в Провіднику рішень: введіть тут опис зображення

    1. Клацніть на Менеджері конфігурацій.
    2. Клацніть на спадній панелі "Активна платформа", якщо x86 вже є, тоді виберіть це, інакше натисніть кнопку Створити. введіть тут опис зображення

    3. Виберіть x86 або x64 зі спадного меню нової платформи: введіть тут опис зображення

Складіть і запустіть свою програму.


6

Якщо встановлена ​​"AccessDatabaseEngine" все ще не допомагає, нижче є рішення:

Вам потрібно змінити платформу Active Solution з "Будь-якого процесора" на "x86".

Провайдер OLEDB не зареєстрований на локальній машині

З CodeProject.com


Ви можете запускати його під будь-якою платформою, НЕ ТІЛЬКО '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-бітного.
illinoistim

Дуже дякую, що це я шукаю.
Маной Каллурі

6

Якщо ви налагоджуєте веб-проект, просто переконайтеся, що IIS Express працює у 32 або 64 бітах залежно від налаштувань вашого проекту.

Йти до

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

і звідти поставте прапорець (або зніміть прапорець) "Використовувати 64-бітну версію IIS Express ..."


1
Вауууууууууууууауш багато годин на інші рішення, тільки виправте це! спасибі
Ернальдо Гонсалес

5

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

Позначте шлях нижче C: \ Файли програми \ Загальні файли \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - встановлено 64 біт

Позначте нижче шлях C: \ Програмні файли (x86) \ Загальні файли \ 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 з" Будь-якого процесора "на" x86 ".

Коли я виконав ці кроки, відновив рішення, схопив EXE і розмістив у мережі, все налагоджено на Windows 7 64-бітній машині.


Ви можете запустити його під будь-якою платформою, НЕ ТІЛЬКО x86, але як будь-який процесор. Дивіться мою відповідь нижче: stackoverflow.com/a/32760211/3637582
Merav Kochavi

3

У мене виникла ця проблема при спробі імпорту даних з файлу excel (xlsx) у БД SQL Server за допомогою SSMS 2014.

Установка драйвера Office 2007: Встановлення компонентів для підключення даних зробила для мене трюк.


... і якщо це не працює, спробуйте вибрати іншу "Версію Excel" зі спадного списку екрана "вибрати джерело даних". stackoverflow.com/a/56171883/283895
tgolisch

@Taran Посилання недоступне
evry1falls

Це схоже на файл, але я не можу підтвердити download.cnet.com/…
Таран

3

Я зіткнувся з цією ж проблемою. Перейдіть до "Властивості рішення" та змініть будь-який процесор на x86, я думаю, це зробить роботу.


3

зробіть це 2 кроки: 1. у цьому меню: project -> yourproject properties ... -> Build: зніміть прапорець "предпочитаю 32-разрядный" 2. in connectionString: запишіть котировки до і після Extended властивостей, як це: 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.
IT Delinquent

Я зняв прапорець "Віддати перевагу 32-бітовому", і він працював !!!
користувач1584253

3

Ці конфігурації працювали в січні 2020 року на моїй новій машинобудуванні:

(Лише для 1 - x64), встановлена ​​Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016, встановлена ​​з / пасивним аргументом, налаштування VStudio збірки встановлено на x64 явно, із наступним рядком з'єднання: Provider = Microsoft.ACE.OLEDB.16.0; Джерело даних = D: ... \ MyDatabase.accdb

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

(Лише для 3 - x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32-бітний), встановлений з / пасивним аргументом, налаштування VStudio збірки встановлено на x86, із наступною рядком з'єднання: Provider = Microsoft.ACE.OLEDB.12.0; Джерело даних = D: ... \ MyDatabase.accdb

ПРИМІТКИ про аварію

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

Використання AnyCPU у візуальній студії налаштування збірки не вдалося в (1). Потрібно встановити x64. Можливо, це тому, що AnyCPU означає, що Vstudio повинен переглядати постачальника x32 ACE.OLEDB.nn.0 під час компіляції.

Двигун ACE.OLEDB.12.0 2016 x32 / пасивний НЕ встановлюється, коли бачив додатки x64 навколо. (Працював установник ACE.OLEDB.12.0 2010 x32 / пасивний.)

ВИСНОВКИ

Для використання налаштувань збірки x64 вам потрібно мати двигун баз даних x64 2016 та постачальник рядків підключення ACE.OLEDB.16.0 І явні налаштування збірки x64 для роботи з Office 365 у січні 2020 року. Використання параметра / пасивний спосіб спрощує встановлення. Подяка тому, хто опублікував цю пораду!

Щоб використовувати AnyCPU, мені потрібно було встановити як двигун ACE.OLEDB.12.0 2010 x32, так і двигуни ACE.OLEDB.16.0 x64. Таким чином Vstudio міг бачити як двигуни x32, так і x64 під час компіляції "AnyCPU". Я можу змінити рядок з'єднання провайдера на ACE.OLEDB.12.0 для операції x32 або на ACE.OLEDB.16.0 для операції x64. Обидва працювали чудово.

Для використання налаштувань збірки x86 вам потрібно мати двигун бази даних 2010 x32 І постачальник рядків підключення ACE.OLEDB.12.0 І явні параметри збірки x86 для роботи з Office 365 x32 у січні 2020 року.


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 / pasive

Без зміни коду мою проблему вирішують.

Примітка:

У 64-бітній ОС та 64-бітному офісі моя функціональність працювала нормально без цього виправлення. Це виправлення потрібно лише тоді, коли наш додаток працює на 64-бітній ОС, на якій встановлений 32-розрядний офіс.


Але Microsoft проти цього рішення. Мало хто з моїх клієнтів спостерігає спотворення в інших програмах Office через це виправлення.
Рахул Течі


1

Я дотримувався інструкцій, викладених іншими; встановлення цього виправлення, встановлення цього виправлення, а також Microsoft Access Database Engine 2010.

Моя проблема полягала в тому, що я використовую ту саму бібліотеку (linq2sql) на двох сайтах на своїй машині; 1 працює, а 1 - ні.

Врешті-решт я виявив, що мені потрібно "включити 32-бітні програми" в розширених налаштуваннях apppool для мого непрацюючого сайту.

Зараз все добре працює.


1

Також можна спробувати ці кроки

У SQL Server 1.Открийте одну базу даних 2.Clic в опції "Об'єкт сервера" 3.Клік у "Пов'язаних серверах" 4.Клік у "Постачальниках" 5.Кліг Rigth у "Microsoft.ACE.OLEDB.12.0" 6. Зніміть прапорці з усіх параметрів і закрийте


1

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


1

У мене була така ж проблема, але в цьому випадку постачальник мікрософт-асо-oledb-12-0 на моїй машині вже встановлено добре працює на інші програми.

Різниця між цим додатком і тим, у кого у мене була проблема, було те, що старі програми працювали на " Local IIS ", тоді як той, що з помилкою, був на " IIS Express (працює з Visual Studio"). Отже, те, що я зробив -

  1. Клацніть правою кнопкою миші на назві проекту.
  2. Перейдіть до Властивості
  3. Перейдіть на веб-вкладку праворуч.
  4. У розділі Сервери виберіть Local IIS та натисніть кнопку Створити віртуальний каталог.
  5. Запустіть програму ще раз, і вона спрацювала.

1

У мене на моїй машині вже встановлений перерозподільний доступ Microsoft Access Database Engine 2010, але він все ще отримував провайдера Microsoft ACE OLEDB помилку .

Тоді я згадав, що нещодавно я перейшов на Office 2016, тому, можливо, мені слід спробувати перевстановити Microsoft Access Database Engine 2010 Redistributable . І це вирішило проблему на моїй машині.

Отже, якщо ви оновили до іншої версії MS Office або навіть відремонтували / перевстановили ваш MS Office, то спробуйте перевстановити Microsoft Access Database Engine 2010 Перерозподілений, перш ніж витрачати час на пошук інших виправлень. Удачі!


1

1.) Перевірте рядок підключення за допомогою ConnectionStrings.com .

2.) Переконайтеся, що у вас встановлений правильний двигун бази даних. Це були два двигуни бази даних, які мені допомогли.

Перерозподіляється Microsoft Access Database Engine 2010, що перерозподіляється

Система драйверів Office 2007: компоненти з'єднання даних

3.) Можливо, у вашій цільовій платформі збірки буде "Будь-який процесор", можливо, це буде "X86" (Властивості, Створення, Платформа).


Ви можете запускати його під будь-якою платформою, НЕ ТІЛЬКО '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-розрядний), і це мене здивувало, чому він не працював. Тому я лише знайшов застосований тут додаток для імпорту / експорту, тобто .EXE. І я знайшов це

C: \ Файли програм \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe

Потім я запустив .exe безпосередньо для імпорту даних. І це спрацювало!


Гм, у мене було кілька версій, 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) у свій інсталяційний пакет.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.