Microsoft.ТУЗ.Oledb для.12.0 поставщик не зарегистрирован
У меня есть решение Visual Studio 2008 с двумя проектами (проект Word-Template и a VB.Net консольное приложение для тестирования). Оба проекта ссылаются на проект базы данных, который открывает соединение с файлом базы данных MS-Access 2007 и имеет ссылки на систему.Данные.Oledb для. В проекте базы данных у меня есть функция, которая возвращает таблицу данных следующим образом
private class AdminDatabase
' stores the connection string which is set in the New() method
dim strAdminConnection as string
public sub New()
...
adminName = dlgopen.FileName
conAdminDB = New OleDbConnection
conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
"Provider=Microsoft.ACE.OLEDB.12.0"
' store the connection string in strAdminConnection
strAdminConnection = conAdminDB.ConnectionString.ToString()
My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
...
End Sub
' retrieves data from the database
Public Function getDataTable(ByVal sqlStatement As String) As DataTable
Dim ds As New DataSet
Dim dt As New DataTable
Dim da As New OleDbDataAdapter
Dim localCon As New OleDbConnection
localCon.ConnectionString = strAdminConnection
Using localCon
Dim command As OleDbCommand = localCon.CreateCommand()
command.CommandText = sqlStatement
localCon.Open()
da.SelectCommand = command
da.Fill(dt)
getDataTable = dt
End Using
End Function
End Class
когда я вызываю эту функцию из моего шаблона Word 2007 проекта все работает нормально, никаких ошибок. Но когда Я запускаю его из консольного приложения он выдает следующее исключение
ex = {"The' Microsoft.ТУЗ.Oledb для.12.0'
поставщик не зарегистрирован на
локальный компьютер."}
оба проекта имеют одинаковую ссылку, и консольное приложение действительно работало, когда я впервые написал его (некоторое время назад), но теперь оно перестало работать. Должно быть, я что-то упустил, но не знаю что. Есть идеи?
9 ответов:
У меня есть программа visual Basic с Visual Studio 2008, которая использует базу данных Access 2007 и получает ту же ошибку. Я нашел несколько потоков, которые рекомендовали изменить расширенную конфигурацию компиляции на x86, найденную в свойствах программ, если вы используете 64-разрядную систему. До сих пор у меня не было никаких проблем с моей программой с тех пор.
в основном, если вы находитесь на 64-разрядной машине, IIS 7 (по умолчанию) не обслуживает 32-разрядные приложения, на которых работает компонент database engine. Так вот именно то, что вы делаете:
1) Убедитесь, что установлен компонент database engine 2007, его можно загрузить по адресу: http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
2) Откройте Диспетчер IIS7 и откройте область пулов приложений. На правой боковой панели, вы появится опция, которая говорит "установить пул приложений по умолчанию". Нажмите на нее, и появится окно с опциями.
3) второе поле вниз, которое говорит "включить 32-разрядные приложения", вероятно, установлено в FALSE по умолчанию. Просто нажмите, где он говорит "false", чтобы изменить его на "true".
4) перезапустите пул приложений (вы можете сделать это, нажав RECYCLE вместо STOP then START, который также будет работать).
5) выполнена, и сообщение об ошибке исчезнет.
вы используете 64-разрядную систему с базой данных под управлением 32 бит, но консоль под управлением 64 бит? Нет драйверов MS Access, которые запускают 64 бит и сообщают об ошибке, идентичной той, о которой вы сообщили.
устранение:
вот именно! Благодаря подел Арджун за ссылку. Вот решение, как найти на XNA Creator's Club онлайн. Это Стивен Стырчак.
следующая ошибка предлагает мне поверить, что вы компилируете для 64bit:
' Microsoft .ТУЗ.OELDB.12.0' поставщик не зарегистрирован на локальном компьютере
у меня нет express edition, но следующие шаги действительны в 2008 году Экспресс?
http://forums.xna.com/forums/t/4377.aspx#22601
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?prof=required
- Арджун Паудель
на
VC# Express, Это свойство отсутствует, но вы все равно можете создать конфигурацию x86, если знаете, где искать.это выглядит как длинный список шагов, но как только вы знаете, где эти вещи намного проще. Любой, кто только имеет
VC# Expressвероятно, это будет полезно. Как только вы узнаете оConfiguration Manager, это будет гораздо проще в следующий раз.1.In VC# Express 2005, перейти к
Tools -> Options.
2.In в левом нижнем углу диалогового окна "Параметры" установите флажок с надписью"Show all settings".
3.In в дереве слева выберите"Projects and Solutions".
4.In параметры справа, установите флажок, который говорит,"Show advanced build configuraions."
5.ЩелчокOK.
6.Перейти кBuild -> Configuration Manager...
7.In в столбце платформа рядом с вашим проектом щелкните поле со списком и выберите"<New...>".
8.В"New platform" setting, choose "x86".
9.НажмитеOK.
10.НажмитеClose.
Вот, теперь у вас есть конфигурация x86! Легко, как пирог! : -)я также рекомендую использовать
Configuration Managerдля удаления любой платформы процессора. Вы действительно не хотите этого, если у вас когда-либо были depedencies на 32-разрядных собственных DLL (даже косвенные зависимости.)Stephen Styrchak / XNA Game Studio Developer http://forums.xna.com/forums/p/4377/22601.aspx#22601
Я подумал, что я бы перезвонил, потому что я нашел этот вопрос, когда столкнулся с немного другим контекстом проблемы и подумал, что это может помочь другим мучимым душам в будущем:
У меня был ASP.NET приложение размещено на IIS 7.0 под управлением 64-разрядной версии Windows Server 2008.
поскольку IIS контролирует битность процесса, решение в моем случае состояло в том, чтобы установить параметр Enable32bitAppOnWin64 в истинный: http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you-can-now-run-32-bit-and-64-bit-applications-on-the-same-server.aspx
Он работает немного по-другому в IIS 6.0 (вы не можете установить Enable32bitAppOnWin64 на уровне пула приложений) http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx?mfr=true
У меня такая же проблема. Я пытаюсь установить office 2010 64bit на Windows 7 64 бит, а затем установить драйвер системы Office 2007 : компоненты подключения к данным.
после этого visual studio 2008 может открыть соединение с файлом базы данных MS-Access 2007.
см. мой пост в аналогичном потоке обмена стеками https://stackoverflow.com/a/21455677/1368849
у меня была установлена версия 15, а не 12, которую я узнал, запустив этот код PowerShell...
(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
Я получил ту же ошибку на полностью обновленном Windows Vista Family 64bit с приложением .NET, которое я скомпилировал только до 32 бит - программа установлена в папке programx86 на 64-разрядных машинах. Он терпит неудачу с этим сообщением об ошибке даже с установленным поставщиком базы данных access 2007, с / wiothout SP2 того же установленного, установленного IIS и пула приложений, установленного для поддержки 32-битных приложений... да, я пробовал каждое решение везде и до сих пор без успеха.
я переключил свое приложение на ACE OLE DB.12.0 потому что JET4. 0 терпел неудачу на 64-битных машинах - и это не лучше : - / Самый многообещающий поток, который я нашел, был такой:
http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/
но при попытке установить 64-разрядный "2010 Office System Driver Beta: Data Connectivity Components" он говорит вам, что вы не можете установить 64-разрядную версию без удаления всех 32-разрядных приложений office... и установка 32-разрядной версии 2010 Office System Driver Beta: Data Connectivity Components не решает начальную проблему, даже с " Microsoft.ТУЗ.Oledb для.12.0 "как поставщик вместо" Microsoft.ТУЗ.Oledb для.14.0 " который эта страница (и другие) рекомендуют.
моя следующая попытка будет следовать этот пост:
проблема связана с неправильным вкусом OLEDB32.DLL и OLEDB32r.DLL регистрируется на сервере. Если 64-разрядные версии зарегистрированы, они должны быть незарегистрированные, а затем зарегистрированные 32-разрядные версии. Чтобы исправить это, отмените регистрацию версий, расположенных в %Program Files%/Common Files/System/OLE DB. Затем зарегистрируйте версии по тому же пути, но в каталоге %Program Files (x86)%.
У кого-нибудь еще было так много проблем с поставщиками JET4.0 и OLEDB ACE на 64-битных машинах? Кто-нибудь нашел решение, если никто из других не работает?
Я предполагаю, что если вы используете 64-разрядную систему с 32-разрядной базой данных и пытаетесь запустить 64-разрядную консоль, на машине должны быть установлены следующие пакеты.
- установите компонент Microsoft Access Database Engine 2010 x86 Распространяемый, эта установка доступна по адресу: http://www.microsoft.com/download/en/details.aspx?id=13255 .
- компоненты подключения к данным Office 2007, эта установка доступный на: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .
- Microsoft Access Database Engine 2010 x64 распространяемый. Вы будете необходимо загрузить пакет локально и запустить его с пассивным флагом. Вы можете скачать здесь установка : http://www.microsoft.com/en-us/download/details.aspx?id=13255 Установка с помощью командной строки с флагом/пассивный'. В в командной строке выполните следующие действия команда: 'AccessDatabaseEngine_x64.exe / passive'
Примечание: порядок, кажется, имеет значение-так что если у вас есть что-нибудь уже установлено, удалите и выполните следующие действия.
Comments