2012-01-09 18 views
0

解決済み:私のVC++アプリケーションは32ビットで、Oracle DBは64ビットでした。最初はクライアントは両方のバージョンのOracleで動作するが、そうはしない。私はOracle 11g2 32bitを再インストールすることで問題を解決しました。OLE DB経由でOracle 11gに接続できません

私はC++でVisual Studio 2008経由でテスト用Oracle 11g2データベースに接続しようとしています。 私のデータベースインスタンス名はORCL.TEST.DBです。テスト目的で、私はuser:SYSTEMとpassword: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ビットのOSと64ビットのOracleだが、Visual Studio 2008では32ビットのC++コンパイラ)だと思った。だから私はOracleのインスタント・クライアント32ビットをインストールしましたが、私の問題は解決しませんでした。

アイデア?

+0

これはあなたが知っている信頼できる接続ですか? – MethodMan

+0

はい、Oracleインスタンスはマシンにインストールされています。私はローカルに接続しようとしています。 – Paradoxyde

+0

私はちょうど私の答えで私の答えに下のコメントを追加しました。あなたは、統合されたセキュリティ "データソース= Oracle11g;統合セキュリティ=はい"を使用して接続しようとしましたか? – MethodMan

答えて

1

OracleのMicrosoft ODBCドライバは非常に古く、サポートされていません.Oracleデータベースとドライバのサポートは、Oracles Webサイトです。 Oracle Site Oracle Networkにアクセスして、無料のアカウントを登録することをお勧めします.Oracle Networkに参加した後は、Visual Studio Tools for Oracleのダウンロードセクションをチェックして、X64またはX86用のODAC112021xcopy.zipパッケージ更新されたWindowsのランタイムドライバ。

ランタイム・ドライバをダウンロードした後、oracleのインストール・ガイドを読んでください.Oracleの新しいドライバがODBCマネージャに表示され、新しいドライバを使用するために接続文字列を更新できます。 Oracleデータベースには、通常、tns.listener接続設定が問題となります。 一般的な設定では、サーバーインスタンスにXE.NAMEを使用します。接続を許可するには、ポート1521のファイアウォールを開く必要があります。 oraXXXXメッセージおよび検索(GoolgeまたはBing)であるoraエラーを調べると、Oracle Databaseエンジンのtnsリスナーを変更する方法を示すWeb上の場所があります。 接続文字列に問題がある場合は、(GoogleまたはBing)接続文字列を使用できます。 IISサーバーのエラーが発生した場合は、「失敗した要求のトレース」を有効にして有効にするためのIIS Netライブラリガイドを参照してください。

+0

ありがとう、私は同じ結果を得た。 – Paradoxyde

+0

私は実際にVisual Studio 2008を使用しています(私の記事で述べたように)。しかし、私の記事では言及しなかったことは、OracleのWebサイトから最新のODBCパッケージをインストールしたことです。 – Paradoxyde

関連する問題