"Невозможно открыть базу данных, созданную с помощью предыдущей версии приложения", показывает, когда программа VB.NET пыталась открыть файл MDB с помощью OleDBConnection

Я создал программное обеспечение с использованием VB.NET в 32-разрядной ОС Windows 7.

Он содержит следующие строки кодов:

 Dim cn As New OleDbConnection
 cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileNameStr & ";Jet OLEDB:Database Password=xxxxxxx"
 cn.Open()

Коды открывают файл MDB (файл Microsoft Access), защищенный паролем.

Когда я запускаю программное обеспечение на моем компьютере, оно работает хорошо.

Однако при тестировании на другом компьютере появляется сообщение об ошибке "Невозможно открыть базу данных, созданную в предыдущей версии приложения".

Сообщение об ошибке отображается после третьей строки кода.введите описание изображения здесь

Не могли бы вы подсказать, где мои ошибки и как мне решить проблему.

Спасибо.

2 ответа

Решение

Когда я запускаю программное обеспечение на моем компьютере, оно работает хорошо.

Однако при тестировании на другом компьютере появляется сообщение об ошибке "Невозможно открыть базу данных, созданную в предыдущей версии приложения".

Это может произойти, когда на разных компьютерах установлены разные версии Access Database Engine. В частности, сообщение об ошибке появится, если

  • файл.mdb находится в формате Access 97, и
  • на компьютере установлена ​​версия Access Database Engine Access 2013 (или более поздняя версия).

В Access 2013 удалена поддержка формата файлов Access 97.

Это может немного сбить с толку, если ваша строка подключения содержит

Provider=Microsoft.ACE.OLEDB.12.0

потому что все версии Access Database Engine Access 2007 (12.0), Access 2010 (14.0) и Access 2013 (15.0) Access Database Engine регистрируют провайдера под именем "12.0", чтобы обеспечить некоторую степень обратной совместимости. Таким образом, для любой машины с Access 2007+ вы можете указать

Microsoft.ACE.OLEDB.12.0

но то, что вы на самом деле используете

Microsoft.ACE.OLEDB.12.0 на машине Access 2007
Microsoft.ACE.OLEDB.14.0 на машине Access 2010
Microsoft.ACE.OLEDB.15.0 на машине Access 2013

Вот почему одно и то же стороннее приложение может открывать файл.mdb на одном компьютере (с установленным Access 2007 или 2010), но не на другом компьютере (с установленным Access 2013).

Я пытался открыть *.mdb, который был сохранен в 2006 году. Я пробовал разные вещи, но использование SQL Server Management Studio 18.9.2 (SSMS) для импорта данных было для меня способом. Вот что я сделал (предполагается, что у вас есть доступ к SQL Server и базе данных):

  • Щелкните правой кнопкой мыши базу данных, в которую вы хотите поместить импортированные таблицы.
  • Выберите Задачи -> Импорт данных.
  • В качестве источника данных выберите Microsoft Access (ядро базы данных Microsoft Jet).
  • Имя файла - перейдите к файлу *.mdb, выберите его и нажмите «Открыть».
  • Нажмите "Далее
  • Назначение: собственный клиент SQL Server 11.0
  • Выберите имя сервера (возможно, оно уже установлено правильно)
  • Настройте любую аутентификацию, необходимую вашему серверу, в поле аутентификации
  • Убедитесь, что в раскрывающемся списке базы данных выбрана правильная база данных (возможно, она уже верна)
  • Нажмите "Далее
  • Оставьте настройку «Копировать данные из одной или нескольких таблиц или представлений».
  • Нажмите "Далее
  • Выберите таблицы, которые вы хотите импортировать
  • Нажмите "Далее
  • Нажмите "Далее
  • нажмите "Готово". Это сделало это для меня. После того, как вы установили его в SQL Server, вы можете манипулировать им по своему усмотрению.
Другие вопросы по тегам