VB.NET 2010でOracle11gに接続するプログラムを作っていますが、
接続方法がいまいちわからずに困っています。
プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、
Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。
ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。
パラメータ値は例です。
(Web.configに記述)
<connectionStrings>
<add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1"
providerName="System.Data.OleDb" />
</connectionStrings>
次に、コンソールプログラムを作成し、同じサーバーで上記と同様の接続文字列で
接続しようとしましたが、エラーとなり接続できませんでした。
いろいろ記述を変えても接続できませんでしたが、最終的にOracle Clientの
32bit版を64bit版と違うフォルダにインストールし、以下の接続文字列で接続
できました。(INIファイルに記載)
ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1
この状態でWEBアプリの方は何を使っているのかと思い、64bit版のインストールフォルダを
リネームしたところ、WEBアプリの方は接続できなくなりました。
現状では32bitと64bitのOracle Clientが両方必要な状況ですが、本来ならどちらかだけで
すむと思います。
32bitと64bitで接続文字列が変わるという情報は得られませんでした。
何がまずいのでしょうか?
最初から32bit版をインストールすれば良かったのでしょうか。
No.2ベストアンサー
- 回答日時:
先ず、大前提として32bitプログラムのプロセス空間には
32bitのDLLしかロードできません。同様に64bitのそれは
64bitのDLLしかロードできません。
OLEの実装にはDLL型とEXE型があり、前者は同一の
プロセス空間にあるため、32bitプログラムからは32bitの、
64bitプログラムからは64bitのDLL実装でなければ動き
ません。
OLEをインスタンス化する時に使うクラス名はレジストリに
登録されており、最終的に処理を担うDLLかEXEのパスに
行き着くようになっています。互換性を保つため、クラス名は
以前から変わっていませんし、32/64の区別もありません。
OracleのOLEはDLL型実装なので、32bitか64bitのどちらか
一方しか処理できません。
ここでは”OraOLEDB.Oracle”が示す最終パスは後から
インストールした方に切り替えられているはずです。
サーバが64bitなら、64bit版で統一すべきでしょう。
32bit版をアンインストールして、もう一度、64bit版を
インストールした方がよいでしょう。
そして、コンソールプログラムの方を64bit版でリビルドする
ことを薦めます。Visual Studio 2012ならどちらでもビルド
できます。
この回答への補足
基礎からの詳しいご回答ありがとうございます。
非常に勉強になります。
まず64bitでビルドする方法を改めて調べて、それができたら
64bitのOracle Clientの状態だけにして試してみたいと思います。
ご指摘の通りでした。
32bit版をアンインストール(Deinstall.batを使用)すると、コンソールアプリだけでなく、
WEBアプリも接続できなくなりました。
64bit版も同様にアンインストールし、再度インストールしました。
コンソールアプリケーションをサーバーのVisualStudioで64bitでビルドし
接続できました。
WEBアプリでも接続できました。
現在は64bit版だけで動く状態になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(AV機器・カメラ) オーディオインターフェイスの24bitなど量子化bit数はどこで設定できるのでしょうか? 1 2022/06/26 07:58
- その他(開発・運用・管理) Windowsバッチファイルでリモートデスクトップを自動ログインするが確認画面が出る対処方法 1 2022/12/19 15:48
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Windows 7 Windows 11へアップグレードする時の方法 7 2023/01/17 23:31
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- 英語 英文和訳についての質問です。 2 2023/06/23 06:38
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
VB.NETの配列の限界を教えてください
Visual Basic(VBA)
-
-
4
VB6(SP5)+OO4OでCreateObjectが失敗する
Visual Basic(VBA)
-
5
テーブルの存在チェックについて
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベース接続情報作成しま...
-
データソース名および指定され...
-
mysql pro 予期せぬエラーが起...
-
Common SQLでOracle DBに接続で...
-
ORA-12170のエラーについて
-
SQLSERVER 2008 ODBC接続
-
C#でOracleに接続
-
VB.NET Oracle接続 32、64bit
-
Oracle10g・・ODBCで接続できない
-
sqlplus / as sysdba で接続不可
-
oracleの直接接続のクライアン...
-
クライアントからのリスナーが...
-
警戒心強めの人って、幼く見て...
-
SQL 全角半角混在の文字列から...
-
Windows Storeを使わずに付箋を...
-
oracleのメモリ使用量が97%ほど...
-
住所コード11桁の住所データ...
-
DB2で SQL1032N start databas...
-
oinstallとdbaグループ、所有ユ...
-
SQLServer2005上の別DBからテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-12170のエラーについて
-
データソース名および指定され...
-
Oracle10g・・ODBCで接続できない
-
データベース接続情報作成しま...
-
「ORA-12637」エラーでORACLEに...
-
SQL*PLUSにてデータベース名表示
-
ExcelとOracleの連携について
-
オープン時にエラーが出て接続...
-
ODBCの設定でSQLServer名がでない
-
VB.NET Oracle接続 32、64bit
-
SQLSERVER 2008 ODBC接続
-
ORA-12154 TNS:指定された接続...
-
oracle rac構成での 接続先につ...
-
C#でOracleに接続
-
オラクルに接続できない
-
リスナーを使用しないでOracle...
-
webアプリケーションからOracle...
-
oracleの直接接続のクライアン...
-
sqlplus / as sysdba で接続不可
-
「ORA-12154:TNS:サービス名を...
おすすめ情報