Как программно создать зашифрованную базу данных, совместимую с Access 2007, из ядра базы данных Access 2010? - PullRequest
1 голос
/ 03 февраля 2012

Я бы хотел обновить приложение, чтобы оно использовало более новый механизм доступа к базе данных Access 2007/2010.В настоящее время он хранит свои данные в базе данных Jet 4.0 (MDB).Мое приложение написано на Delphi и использует ADODB (ADO classic) для взаимодействия с базой данных.Я хотел бы обновить ядро ​​базы данных с Jet 4.0, чтобы предлагать лучшие варианты шифрования.

Я изменил строку подключения в своем приложении, чтобы использовать Microsoft.ACE.OLEDB.12.0, и, несмотря на некоторые ошибки,преобразование прошло на удивление хорошо!Впечатляющая обратная совместимость.

Я также распространяю свое приложение в комплекте Wine для пользователей Mac.Я сталкиваюсь с несколькими проблемами при запуске моего приложения под Access 2010 Database Engine на Wine (1.4-rc1).Странные нарушения доступа появляются.Когда я вместо этого устанавливаю компонент базы данных Access 2007 на Wine, мое приложение прекрасно работает.Так же хорошо, как с Jet 4.0.Похоже, что ядро ​​базы данных Access 2010 не совсем готово для Wine.Облом!

Проблема, с которой я сталкиваюсь, заключается в том, что, если у вас на компьютере Windows установлен Access 2010 Database Engine (например, когда вы устанавливаете Access 2010), он создает новую базу данных и шифрует ее с помощьюболее высокая форма безопасности, несовместимая с Access 2007. Пользователи моего приложения не могли совместно использовать свою базу данных между ПК и Mac (например, через Dropbox), поскольку они больше не будут совместимы.

В Access 2010 выможно установить для него параметр «Использовать устаревшее шифрование».Этот параметр заставляет Access 2010 создавать новые базы данных с использованием шифрования, совместимого с Access 2007. Этот параметр устанавливает раздел реестра «CompatMode», и приложение Access 2010 в этом случае должно использовать другой подход к созданию новых баз данных.

У меня вопрос: как программно создать зашифрованную базу данных, совместимую с Access 2007, из ядра базы данных Access 2010?Если приложение Access 2010 может это сделать, как я могу?Мне известны два метода создания базы данных Access: 1. через DAO (DBEngine.CreateDatabase), 2. через ADOX (Catalog.Create).Я пробовал различные подходы к этим двум методам, и не могу придумать ничего, что создает зашифрованную базу данных, совместимую с Access 2007.

...