Невозможно подключиться к Oracle 11g через OLE DB - PullRequest
0 голосов
/ 10 января 2012

решено: мое приложение VC ++ было 32-разрядным, а база данных Oracle - 64-разрядной.Сначала я думал, что клиент будет работать с обеими версиями Oracle, но это не так.Таким образом, я решил проблему путем переустановки Oracle 11g2 32bit.

Я пытаюсь подключиться к тестовой базе данных Oracle 11g2 через Visual Studio 2008 на C ++.Имя моего экземпляра базы данных - ORCL.TEST.DB, и для целей тестирования я пытаюсь соединиться с пользователем: SYSTEM и паролем: admin.Я также использую коннектор Oracle OLE DB.

Как видите, я не пытаюсь сделать что-то необычное, я просто пытаюсь успешно подключиться.

CDataSource ds;
CSession session;

int _tmain(int argc, _TCHAR* argv[])
{
try{
    // fire up COM
    HRESULT hr = CoInitialize(0);
    if(FAILED(hr))
    {
        cout << "Can't start COM!? " << endl;
        return -1;
    }

    /// connect to the database
    //hr = ds.Open(L"OraOLEDB.Oracle", _T("ORCL"), _T("SYSTEM"), _T("admin"));
    hr = ds.OpenFromInitializationString(L"Provider=OraOLEDB.Oracle;Data Source=ORCL.TEST.DB;User Id=SYSTEM;Password=admin");
    if(FAILED(hr))
    {
        ////////////////THIS IS WHERE IT ENDS UP
        cout << "Can't open db" << endl << hr << endl;
        return -1;
    }
}
catch(...){
    cout << "Unknown failure" << endl;
    return -1;
}
return 0;
}

Ошибкакод hr содержит 80004005, то есть E_FAIL (неопределенный сбой).

Сначала я подумал, что это проблема 32 на 64 (64-битная ОС и 64-битная Oracle, но 32-битный компилятор C ++ в Visual Studio 2008).Поэтому я установил 32-битный Oracle Instant Client, но он не решил мою проблему.

Есть идеи?

1 Ответ

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

Драйвер Microsoft ODBC для Oracle очень старый и не поддерживается. Поддержка базы данных и драйверов Oracle доступна на веб-сайте Oracle.Я предлагаю вам посетить Oracle Site Oracle Network и зарегистрироваться для получения бесплатной учетной записи. После того, как вы присоединились к Oracle Network, проверьте раздел загрузки для Visual Studio Tools for Oracle и найдите пакет ODAC112021xcopy.zip.для X64 или X86, который содержит обновленные драйверы времени выполнения для Windows.

После того, как вы загрузили драйверы времени выполнения, прочитайте руководства по установке для Oracle. Новый драйвер для Oracle появится в диспетчере ODBC, который вы затем сможете обновить "ваша строка подключения "для использования нового драйвера. Если вы не можете подключиться к базе данных Oracle, проблема обычно заключается в настройках соединения tns.listener.Типичные настройки используют XE.NAME для экземпляра сервера.Вам нужно будет открыть брандмауэр для порта 1521, чтобы разрешить подключения.Если вы посмотрите на ошибку ora, то есть сообщение oraXXXX и поиск (Goolge или Bing), в Интернете есть место, где показано, как изменить прослушиватель tns для механизма Oracle Database Engine.Если у вас есть проблемы со строкой подключения, вы можете (Google или Bing) Строки подключения.Если у вас есть ошибки IIS Server, прочитайте руководства для библиотеки IIS Net по включению и включению «отслеживания невыполненных запросов»

...