■53493 / ) |
Re[7]: OracleClient接続のあとにODP接続でエラー発生 |
□投稿者/ たか (87回)-(2010/09/15(Wed) 10:51:30)
|
お付き合いくださり、ありがとうございます。
> 以下のコードでもエラーが発生するんでしょうか? > using (var conn = new System.Data.OracleClient.OracleConnection()) > { > //conn.ConnectionString = "Data Source=TESTDB;User ID=sa;Password=pass"; > //conn.Open(); > } > using (var conn = new Oracle.DataAccess.Client.OracleConnection()) > { > } 上記ケースは、さすがに発生しませんでした。
> それとも再現条件にはOpenやTransactionも必要なんでしょうか? このusingの間に↓をいれると同じエラーが発生します。 conn.ConnectionString = "Data Source=xxx;User ID=ユーザーID;Password=パス"; conn.Open(); conn.Close();
Openが再現条件です。
> (エラーは同様と書かれましたが、TypeInitializationExceptionですか?) はい。TypeInitializationExceptionです。まったく同じエラーです。
> ただし、普通は2つのプロバイダを使う必要性はないと思うので、どうしてそうされているのかも興味があります。 Windowsツールを作っていまして、すきなプロバイダーを設定画面で設定してDBアクセスするツールになります。 なので、1度の実行(exeを実行して終了するまで)の中で、複数プロバイダーを使用するケースが生まれています。 (たしかに通常、発生しないケースです)
> もしかして、プロバイダが異なるEXEを続けて実行した場合にもエラーが発生したりするんでしょうか? この場合は、発生しません。 なので、.net標準ライブラリでopenした後の、後片付けがきちんどできていないためのエラーのように見えます。
> だめもとですが、2つめのusingの前でGC.Collect()を実行しても変わらないでしょうか? 試したところ、変わりませんでした。同じエラーです。
> Open不要な場合は関係ないですが、1つめの接続でPoolingを無効にしても同じでしょうか? 以下のようにしましたが、やはり同じエラーが発生しました。 conn.ConnectionString = "Data Source=xxx;Pooling=false;User ID=ユーザーID;Password=パス";
|
|