Как получить версию данного файла базы данных SQL Server Compact Edition (.sdf), используя OLEDB API? - PullRequest
0 голосов
/ 25 января 2012

Мое приложение C ++ должно работать с файлами базы данных SSCE, принадлежащими к разным версиям.Прямо сейчас у меня нет возможности узнать версию базы данных.

Проблема заключается в том, что если версия поставщика OLEDB SSCE не соответствует версии файла базы данных, IDBInitialize::Initialize() завершается с ошибкой E_FAIL.Чтобы получить значимое сообщение об ошибке, нужно получить соответствующий IErrorInfo объект.

Дело в том, что код ошибки E_FAIL не сообщает мне, произошла ли ошибка из-за несоответствия версий или для некоторыхдругая причина.В первом случае я должен повторить попытку с другим поставщиком SSCE, а во втором приложение должно завершиться.

Как я могу реализовать эту логику?Есть ли какой-нибудь API, который я могу вызвать перед вызовом IDBInitialize::Initialize() для проверки совместимости версий?Есть ли способ получить реальный код ошибки вместо непрозрачного E_FAIL?

Спасибо.

1 Ответ

1 голос
/ 25 января 2012

Вы можете посмотреть первые байты файла - посмотрите этот пример на C # - http://erikej.blogspot.com/2010/08/how-to-upgrade-version-3x-database-file.html

...