
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も見ています
-
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
意味不明の実行時エラーで困っています
その他(プログラミング・Web制作)
-
VB.NETで他のEXEを実行させる
Visual Basic(VBA)
-
-
4
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
5
OLEDB.NETで接続できない
Visual Basic(VBA)
-
6
.VBSだとADODBのプロバイダが見つからない件
Visual Basic(VBA)
-
7
SQL*Loaderで、データを加工してロードしたいです。
Oracle
-
8
SQL*LoaderでCSVから指定した列のみインポートしたい。
Oracle
-
9
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
10
OraOps10.dllのエラーについて
Oracle
-
11
64bit端末でのOLEDB接続に関して
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracle10g・・ODBCで接続できない
-
データソース名および指定され...
-
オープン時にエラーが出て接続...
-
ODBCの設定でSQLServer名がでない
-
Oracle11g NetConfigurationAss...
-
「ORA-6413 接続がオープンして...
-
「ORA-12637」エラーでORACLEに...
-
instantclient cse接続ができない
-
オラクルに接続できない
-
クライアントからのリスナーが...
-
オラクルの「ORA_12545 ターゲ...
-
1つの環境に、同じインスタンス...
-
ORA-12170のエラーについて
-
oracle rac構成での 接続先につ...
-
ユーザー名について(権限付与...
-
VB.NET Oracle接続 32、64bit
-
sqlplus / as sysdba で接続不可
-
リスナーを使用しないでOracle...
-
ORA-12154:TNS
-
SQL*PLUSにてデータベース名表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データソース名および指定され...
-
SQL*PLUSにてデータベース名表示
-
ORA-12170のエラーについて
-
データベース接続情報作成しま...
-
Oracle10g・・ODBCで接続できない
-
VB.NET Oracle接続 32、64bit
-
「ORA-12637」エラーでORACLEに...
-
クライアントからのリスナーが...
-
sqlplus / as sysdba で接続不可
-
Npgsqlを用いて接続を行いたい...
-
オープン時にエラーが出て接続...
-
instantclient cse接続ができない
-
ExcelとOracleの連携について
-
ODBC接続に関して
-
ODBCの設定でSQLServer名がでない
-
SQLSERVER 2008 ODBC接続
-
オラクルに接続できない
-
「libpq.dll」ロード時にエラー
-
oracleの直接接続のクライアン...
-
「ORA-6413 接続がオープンして...
おすすめ情報