'Майкрософт.ТУЗ.Oledb для.12.0' поставщик не зарегистрирован на локальном компьютере

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

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

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

' Microsoft.ТУЗ.Oledb для.12.0' поставщик не зарегистрирован на локальном компьютере.

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

30 ответов


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


64-разрядная версия "Microsoft Access Database Engine 2010 Redistributable", которая позволит вам использовать " Microsoft.ТУЗ.Oledb для.12.0 ' поставщик доступен здесь:
http://www.microsoft.com/en-us/download/details.aspx?id=13255

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


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

резюме:

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

    (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"

даже в предстоящем office 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.ТУЗ.Для oledb

  • Microsoft.ТУЗ.Oledb для.12.0

офис 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.ТУЗ.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.ТУЗ.Oledb для.16.0" версии


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


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

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

    1. для использования " Microsoft.ТУЗ.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, используя пассивный флаг.

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

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

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


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

enter image description here

enter image description here


для всех, кто все еще затронуты этим.

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

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

...как описано в OP, Shailesh Sahu.

у меня 64bit Windows 7.

моя проблема в PowerShell скрипты, но использует строку подключения, аналогичную сообщению OP, поэтому, надеюсь, мои выводы могут быть применены к C#, PowerShell и любому другому языку, основанному на "Microsoft.ТУЗ.Драйвер для oledb".

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

Я сначала попытался установить 64bit версия, а затем установить 32bit версия 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.ТУЗ.Oledb для.15.0 (пятнадцать) не Microsoft.ТУЗ.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 установлена и использовать соответствующий номер версии.


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

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


вам нужно изменить платформу решения с "любого процессора" на "x86" или " x64 " на основе битности установки office.

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

  1. щелкните правой кнопкой мыши файл решения в обозревателе решений: enter image description here

    1. нажмите на Configuration Manager.
    2. нажмите на активную платформу выпадающего списка, если x86 уже там, то выберите, что, иначе нажмите на Новый. enter image description here

    3. выберите x86 или x64 в раскрывающемся списке новая платформа: enter image description here

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


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

вам нужно изменить активную платформу решения с "любого процессора"на " x86".

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

От CodeProject.com


syp_dino,

решение для меня, как вы предложили для "Microsoft.ТУЗ.Oledb для.12.0' поставщик не зарегистрирован на локальном компьютере" ошибка заключается в изменении активной платформы решения с "любого процессора"на " x86".

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


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

перейти

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

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


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

история вопроса:

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

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

решение

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

AccessDatabaseEngine_x64.ехе /пассивный

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

Примечание:

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


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

ключевым моментом для меня было следующее:

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

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

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

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


просто скачайте и установите следующий Access DB engine (X86 или X64: в соответствии с конфигурацией вашего компьютера) и посмотрите magic :)

https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255


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

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


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

Регистрация ниже путь файлов C:\Program \Common папку общий\ВАЛЮТЫ14\ACEOLEDB.DLL --64 бит установлен

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

Если (x86) установлен, то с помощью configuration manager измените платформу решения на x86, для x64 измените на х64.

Если не доступно, установите, используя ссылку ниже

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


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

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

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

все работает нормально теперь.


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

в SQL Server, 1.Открыть одну базу данных 2.Clic в опции 'сервер Obtect' 3.Нажмите 'серверов' 4.Clic в "провайдерах" 5.Clic Rigth в Microsoft.ТУЗ.Oledb для.12.0' 6.Снимите все опции и закройте


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


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

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

  1. щелкните правой кнопкой мыши на имени проекта.
  2. перейти к свойствам
  3. перейдите на вкладку Web справа.
  4. В разделе серверы выберите локальный IIS и нажмите кнопку создать виртуальный каталог.
  5. запустите приложение еще раз, и оно сработало.

Я Распространяемый Компонент Microsoft Access Database Engine 2010 уже установлен на моей машине, но все еще получал поставщик Microsoft ACE OLEDB ошибка.

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

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


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

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

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

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

3.) Может возникнуть проблема с целевой платформой сборки "любой процессор", это может потребоваться " X86 " (свойства, сборка, целевая платформа).


Если вы получите эту ошибку при попытке использовать 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 панели управления "Администрирование").

для более глубокого понимания см. ниже ссылке


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


Это смотря с управлением у вас установлена, если у вас х64 разрядную версию Office, то вы должны скомпилировать приложение как x64, чтобы позволить ему работать, так что если вы хотите работать на х36, то вы должны установить Office x86, чтобы принять, я перепробовал все решения, но никто не работал до тех пор, когда я понял, что офис x64bit и поэтому я построил приложение, как x64 и работала


  • Я сталкиваются с той же проблемой в течение нескольких дней. Я установил OLEDB драйверы для 64 bit, опробованные 32 bit также доступны на веб-сайт microsoft.
  • Я также попытался переустановить версию office 64bit почему-то это не сработало. Пробовал разрешить 32-битное приложение в пуле IIS истинный.
  • попробовал изменить среду проекта на X86, AnyMachine, Mixed. И почти попробовал все патчи, которые я мог найти в интернете. Но все решение разочаровало меня.
  • хотя я, наконец, узнал, что провайдер, который мы загружали, был последним и не работал с ним тоже.
  • Я удалил его и установил драйверы oledb для 14.0.7015.1000 .У меня нет ссылки на нее, поскольку я получил ее из ресурсов компании, вам может потребоваться google, но она работает. Я пришел на это ССЫЛКА ДЛЯ СКАЧИВАНИЯ Microsoft и это тоже сработало... однако это версия 14.0.6119.5000 но это сработало.

Я получил эту ошибку при импорте данных из файла Excel в MS-SQL. Поставщик уже был установлен (64-бит), и это удивило меня, почему это не сработало. Поэтому все, что я сделал, это найти приложение импорта/экспорта, используемое здесь, т. е.ИСПОЛНЯЕМЫЙ. И я нашел его в

C:\Program файлы\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe

Я тогда побежал .исполняемые непосредственно для выполнения импорта данных. И это сработало!


то, как я решил это на разных компьютерах:

У меня есть 32-битная машина Windows 7 с Visual Studio 2012, у которой не было базы данных Access, потому что у меня нет Office 2010. Я скопировал тот же источник, что и на моей 64-битной машине Windows 7.

Итак, я установил AccessDatabaseEngine в эту Windows 7 32-битную машину после загрузки его в вышеуказанные предложения от других здесь, и все работало нормально.

У меня все еще была проблема на моем Windows 7 64 бит машина, которая уже имеет Office 2010, который уже включает в себя Access 2010. Способ, которым я решил на этом компьютере, был, войдя в проект, выбранные свойства, и в Platform target был любой процессор, который я проверил, предпочитает 32-бит. Компиляции/сборки и Microsoft.ТУЗ.Oledb для.12.0' поставщик не зарегистрирован на локальном компьютере сообщение пропало.


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

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

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

  1. войдите "C:\Program файлы (x86)\Общие файлы\общий доступ к microsoft" или "C:\Program Files\Common Files\Microsoft Shared" и поместите Каталог "OFFICE14" находится в том же месте файла пакета.

или

  1. прикрепите два проекта (в item1)в установочном пакете.