Я поддерживаю приложение .NET 3.5 (использующее Visual Studio 2008), которое вызывает OleDbConnection.Open () с поставщиком строки подключения Microsoft.ACE.OLEDB.12 и файлом MDB с форматом Access97. Это приложение требует, чтобы была установлена среда выполнения Access 2007.
Вызов OleDbConnection.Open () завершается успешно, если установлена среда выполнения Office 2007, а среда выполнения Access 2010 НЕ установлена. После установки Access 2010 Runtime (например, пользователь устанавливает Office 2010) вызов не выполняется. Сообщение об ошибке: «Невозможно открыть базу данных, созданную с помощью предыдущей версии вашего приложения».
Из чтения других тем в StackOverflow и других местах выясняется, что Access 2010 не поддерживает чтение или преобразование файлов MDB Access97. Нет ли возможности вызвать функциональные возможности среды выполнения Office 2007 после установки среды выполнения Access 2010 (без удаления Access 2010).
Другой подход заключается в программном преобразовании Access97 MDB в более поздний формат, который может быть прочитан Access 2010. Я пробовал вызывать: Microsoft.Office.Interop.Access.Application.ConvertAccessProject (), реализованный в библиотеке объектов Microsoft Access 14.0; с установленными различными версиями Access, но я получаю сообщение об ошибке COM (сбой при выполнении сервера 80080005).
Я также пробовал запустить msaccess.exe в своем приложении с флагом / Convert. Это приводит к открытию Access 2000, но с сообщением об ошибке («Microsoft Access не удалось преобразовать ...»).
Между прочим, базы данных MDB не содержат ничего "сложного", никаких реляционных данных, никаких макросов, никакой безопасности и т. Д., Только плоские записи.
Я нашел несколько полезных советов по программированию на сайте Аллена Брауна (http://allenbrowne.com/ser-48.html "Преобразование из Access97" и http://allenbrowne.com/Access2007.html " Преобразование в Access 2007 »), но ничего из этого не вышло.
Есть мысли о том, как лучше всего решить эту проблему?