Мое приложение C ++ должно работать с файлами базы данных SSCE, принадлежащими к разным версиям.Прямо сейчас у меня нет возможности узнать версию базы данных.
Проблема заключается в том, что если версия поставщика OLEDB SSCE не соответствует версии файла базы данных, IDBInitialize::Initialize()
завершается с ошибкой E_FAIL
.Чтобы получить значимое сообщение об ошибке, нужно получить соответствующий IErrorInfo
объект.
Дело в том, что код ошибки E_FAIL
не сообщает мне, произошла ли ошибка из-за несоответствия версий или для некоторыхдругая причина.В первом случае я должен повторить попытку с другим поставщиком SSCE, а во втором приложение должно завершиться.
Как я могу реализовать эту логику?Есть ли какой-нибудь API, который я могу вызвать перед вызовом IDBInitialize::Initialize()
для проверки совместимости версий?Есть ли способ получить реальный код ошибки вместо непрозрачного E_FAIL
?
Спасибо.