- Microsoft.ТУЗ.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 297

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, так и из 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.ТУЗ.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 Database Engine с использованием пассивного флага.

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

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

у меня 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-битный офис на наших машинах.

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

решение

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

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

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

Примечание:

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

Я смог исправить это, выполнив действия, описанные в этой статье: 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.

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

сначала проверьте, какая версия 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 измените на x64.

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

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 в опции 'Server Obtect' 3.Нажмите 'серверов' 4.Clic в "провайдерах" 5.Клик правой стороне в 'Майкрософт.ТУЗ.Oledb для.12.0' 6.Снимите все флажки и закройте

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

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

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

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

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

затем я вспомнил, что недавно обновился до 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. Если вы выполняете установку на своей машине разработки, вы также можете быть ограничена разрядностью всех существующих офисных установок.

второй вариант-изменить пул приложений в 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 в эту 32-разрядную машину Windows 7 после загрузки его в соответствии с приведенными выше предложениями от других здесь, и все работало нормально.

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

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

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

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

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

или

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