Поставщик Microsoft.ACE.OLEDB.12.0 больше не может открывать .mdb под Windows 8
У меня есть приложение x64, которое использует поставщик Microsoft.ACE.OLEDB.12.0 для чтения базы данных MS Access в Windows 7 (x64), и она отлично работает (установлен Office 2010).
То же самое приложение, запущенное под Windows 8 с установленным Office 2013, выходит из строя с сообщением о том, что провайдер не может открыть предыдущие версии.
В Windows 8 с установленным Office 2013 также есть Microsoft.ACE.OLEDB.15.0, но я дважды проверил свой код и уверен, что он указывает 12.0 в строке подключения.
Существуют ли разные "версии" этого провайдера или есть что-то, что я пропустил?
Я перекомпилировал тестовую программу под Windows 8 для использования платформы x86 и сменил поставщика на Microsoft.Jet.OLEDB.4.0, и все это снова работает. К сожалению, модуль является частью более крупной экосистемы, которая должна быть выполнена под управлением x64 (в частности, подключаемого модуля к excel), а база данных доступа загружается пакетом с веб-сайта поставщика приложением, поэтому нецелесообразно преобразовать базу данных или изменить все на x86.
Спасибо заранее.
Ответы
Ответ 1
Мне пришло в голову проверить версии файлов, которые использовались для каждого провайдера, и охотиться через реестр, обнаружили, что при чистой установке Windows 8 с установленным Office 2013 оба поставщика указывают на одну и ту же сборку.
(C:\Program Files\Common Files\microsoft shared\OFFICE15\ACEOLEDB.DLL)
Затем я загрузил и перезапустил Microsoft Access Database Engine Redistributable (http://www.microsoft.com/en-us/download/details.aspx?id=13255), который затем установил правильную версию поставщика 12.0 в C:\Program Files\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL, и приложение ведет себя как ожидалось.
Казалось бы странным, что MS включила провайдера с брендом 12.0, который больше не ведет себя как 12.0.
В любом случае - надеюсь, что кто-то поможет от 4-5 часов вытягивания волос...
Craig
Ответ 2
Проблема с установкой старшего перераспределяемого ACE заключается в том, что при следующем запуске Access в Office 2013 Office будет "ремонтировать" себя и переключить указатель на версию 12 обратно в каталог Office15.
Ответ 3
Я использую Windows 8.1 64bit и Microsoft Office 2013
Я установил "Microsoft Access Database Engine 2010 Redistributable" , но ничего не изменилось, и у него такая же ошибка. НО!
Установка "2007:" Компоненты подключения к данным " решила проблему.
Я нашел это решение через ссылку .
пытается подключиться к базе данных Access в visual studio, но сохранить получить эту ошибку?
попробуйте установить это сначала: http://www.microsoft.com/download/en/details.aspx?id=13255
однако, если, как и я, это не работает для вас, попробуйте следующее Метод:
ПРИМЕЧАНИЕ: это РАБОТАЕТ для офиса 2010 года, даже если это за 2007 год офис, не спрашивайте меня, почему он просто делает:)
Ответ 4
Просто, чтобы прояснить поведение, описанное OP:
С Office 2013 (ACE 15.0) Microsoft отменила поддержку mdb файлов, созданных с помощью Jet 3.x и ранее (то есть Access 97 и ранее). Поэтому я решительно полагаю, что база данных OP, которая вызвала проблему, была Access97-DB. Базы Jet 4.0 (Access 2000, as..mdb) по-прежнему поддерживаются и не будут вызывать ошибок.
Тот факт, что Office 2013 также регистрирует свои новые драйверы в качестве более ранних версий, представляет собой преднамеренную попытку MS, чтобы поддерживать работу многих программ и скриптов, имеющих встроенное встроенное имя поставщика. Как вы узнали о своем обновлении, это только поддерживает много, а не все...
Ответ 5
Кроме того, похоже, что 32-разрядная версия Распространяемого продукта работает для Office 2013_64 бит на 64-битной ОС Windows, тогда как 64-разрядная версия Распространяемого не была в моем случае
Ответ 6