- PR -

「"System.Data.OracleClient.OCI" のタイプ初期化子が例外をスローしました。」というエラーが出る。

投稿者投稿内容
けん
会議室デビュー日: 2004/09/08
投稿数: 17
投稿日時: 2005-06-14 16:40
こんにちは。
知っている方がいたら教えてください。

Windows2003Serverに、VB.NETで作成したWebアプリケーションをインストールして、
データベースにConnectしようとすると、「"System.Data.OracleClient.OCI" のタイプ
初期化子が例外をスローしました。」と言うエラーが出てしまいます。

何のことだかさっぱりわからないのですが、ご存知の方いらっしゃいますか?

ちなみに、データベースはOracle10.1.0.4で「Oracle data Provider」を使用して、
ODBC経由で接続しようとしています。

このエラーは、Windows2000及びWindowsXPにIISを立てて実行した際には発生しません。
Windows2003のみ(2台で確認)で起きます。


よろしくお願い致します。


たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-14 18:24
クラスの初期化に失敗したという例外をそのまま受け取るなら、クラスの扱いに間違いがあるのでしょう。どういうコードですか?

System.Data.Odbcを使ってはいかが
http://www.microsoft.com/japan/msdn/library/?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDataOdbc.asp?frame=true


そもそも、ORACLEにつなぐならODP.NETがよいです。

_________________
たつごろー
codeseek
こみゅぷらす
けん
会議室デビュー日: 2004/09/08
投稿数: 17
投稿日時: 2005-06-15 09:18
回答ありがとうございます。

エラーが発生するのは、以下の「myConnection.Open()」時だと思います。
Windows2003だと何か違うんですかね?


-------------------------------------
'データベースコネクションを開く
'@return コネクション
Public Function openConnection() As OracleConnection

Dim myConnString As String
Dim myConnection As OracleConnection

Try

myConnection = newConnection()
myConnection.Open()

msg = "ServerVersion: " + myConnection.ServerVersion _
+ ControlChars.Cr + "DataSource: " + myConnection.DataSource.ToString()

Return myConnection

Catch ex As Exception
msg = ex.Message()
End Try

End Function

たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-15 09:34
引用:

ちなみに、データベースはOracle10.1.0.4で「Oracle data Provider」を使用して、
ODBC経由で接続しようとしています。


見落としてました。
ODP.NETですよね。
ならば、ODBCは使いませんよね。

今作っているプログラム以外で、これまでにそのデータベースにうまくつながったことがありますか?
なかったら、まずは、サンプルでもいいから動かしてみてはいかがでしょう。
うまく動いたものと動かなかったものの差を見つけることで問題を克服できるでしょう。

ここで質問してもいいのですが、ORACLE色の強いことなので、OTNの方がよりよいでしょう。


_________________
たつごろー http://www.codeseek.net

[ メッセージ編集済み 編集者: たつごろー 編集日時 2005-06-15 09:35 ]
けん
会議室デビュー日: 2004/09/08
投稿数: 17
投稿日時: 2005-06-15 09:47
Microsoft製の.NET Framework Data Provider for Oracleを使用しています。
Imports System.Data.OracleClient と定義していて、
ODBCとの接続部分は以下の通りです。

--------------------------------
'データベースコネクションの作成
Public Function newConnection() As OracleConnection

Dim myConnString As String
Dim myConnection As OracleConnection

Try
myConnString = "Data Source=orairis;" _
+ "User ID=websda;" _
+ "password=websda;"

' プーリングを使用する接続文字列(最大プール数=20 最小プール数=5) _
'myConnString = myConnString + "Pooling=true;Max Pool Size=20;Min Pool Size=5;"
myConnString = myConnString + "Connection Lifetime=60;"

myConnection = New OracleConnection(myConnString)

Return myConnection

Catch ex As Exception
msg = ex.Message()
End Try

End Function
--------------------------------


Windows2000,XPのマシンからは正常にこのアプリは動くんですよ。
Windows2003からだけ駄目なんです。

Frameworkのバージョンのせいでしょうか。

たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-15 09:52
引用:

Frameworkのバージョンのせいでしょうか。


バージョン違うの?なら動かないことがあります。
同じにして試してはいかが。


_________________
たつごろー http://www.codeseek.net

[ メッセージ編集済み 編集者: たつごろー 編集日時 2005-06-15 09:52 ]
けん
会議室デビュー日: 2004/09/08
投稿数: 17
投稿日時: 2005-06-15 10:01
Visual Studio 2002で作成したので、開発環境のFrameworkのバージョンは1.0です。
しかし、顧客の本番サーバーは、Windows2003なので、バージョンが1.1だと
思うのです。
初めての.NETなので、わからないことだらけで。

ですから、顧客の本番機のFrameworkのバージョンを下げることはできませんし、
原因が、Frameworkのバージョンの問題であれば、動くようにプログラムを変えないと
いけないんです。


たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-15 10:08
引用:

Visual Studio 2002で作成したので、開発環境のFrameworkのバージョンは1.0です。
しかし、顧客の本番サーバーは、Windows2003なので、バージョンが1.1だと
ですから、顧客の本番機のFrameworkのバージョンを下げることはできませんし、


Visual Studio 2003で開発すべきです。
無いなら、.NET Framework1.1 SDKでコンパイルしてはいかがでしょう。

.NET Framework 1.1 の入手方法
http://www.microsoft.com/japan/msdn/netframework/downloads/howtoget.asp


_________________
たつごろー
codeseek
こみゅぷらす

スキルアップ/キャリアアップ(JOB@IT)