- - PR -
ASP.NET から Oracle 10g へ OLEDB接続で予期しないエラー
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-13 08:28
念のために、ORACLE_HOMEに対して、 ・すべての子オブジェクトのアクセス許可を元に戻し、継承可能なアクセス許可を継承できるようにする をチェックして適用していただけませんか?
Resultが「ACCESS DENIED」になっているものの、PathとOtherをご確認ください。 | ||||||||
|
投稿日時: 2005-01-13 09:28
というのがどこにあるのか分からなかったので、現状のセキュリティ設定のまま
を調べてみたところ、 Path :[ORACLE_HOME]\oracore\zoneinfo\timezlrg.dat Other:[開発PC名]\ASPNET が「ACCESS DENIED」になっていました。 エクスプローラでセキュリティを確認すると[ORACLE_HOME]\oracore\zoneinfo には、ORACLE_HOMEに設定した内容が継承されていましたが、その配下にあるファイルには継承されていませんでした。 とりあえず、timexlrg.datに対して、ASPNETとIUSR_XXXのアクセス権限を与えたところ、以下のようにエラー内容が変わりました。 <--- エラー内容 ---> エラー情報 : E_UNEXPECTED(0x8000FFFF) がありません。 説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.Data.OleDb.OleDbException: エラー情報 : E_UNEXPECTED(0x8000FFFF) がありません。 ソース エラー: 行 80: objCon = New OleDb.OleDbConnection 行 81: objCon.ConnectionString = Me.txtCon.Text 行 82: objCon.Open() 行 83: 行 84: objCom = New OleDb.OleDbCommand ソース ファイル : C:\Inetpub\wwwroot\WadaWeb\OraSql\OraSql1.aspx.vb 行 : 82 スタック トレース: [OleDbException (0x8000ffff): エラー情報 : E_UNEXPECTED(0x8000FFFF) がありません。] System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) +20 System.Data.OleDb.OleDbConnection.InitializeProvider() +57 System.Data.OleDb.OleDbConnection.Open() +203 WadaWeb.OraSql1.Button2_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WadaWeb\OraSql\OraSql1.aspx.vb:82 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33 System.Web.UI.Page.ProcessRequestMain() +1292 | ||||||||
|
投稿日時: 2005-01-13 13:08
フォルダのセキュリティ設定の、詳細設定のところです。 ご確認くださいませ。 | ||||||||
|
投稿日時: 2005-01-13 16:53
と言うのはWin2000での話ですか? WinXPでは ・子オブジェクトに適用するアクセス許可エントリを親から継承し、それたをここで明示的に定義されているものに含める というのがありましたので、ななさんのアドバイスをそれに読み替えて試してみましたが、結果は変わりませんでした。 | ||||||||
|
投稿日時: 2005-01-13 21:30
ご指摘のとおり...失礼いたしました。 WinXPの場合は、 ・子オブジェクトすべてのアクセス許可エントリを、ここに表示されているエントリで子オブジェクトに適用するもので置換する です。 | ||||||||
|
投稿日時: 2005-01-14 09:42
を適用してみたところ、アクセス許可が継承されないファイルがいくつかありました。 (全部見たわけではありませんが...) そのままOracle接続を試してみると、 ・[ORACLE_HOME]\oracore\zoneinfo\timezlrg.dat ・[ORACLE_HOME]\nls\data\lx1boot.nlb が「ACCESS DENIED」になっていました。 上記2つのファイルに対して、継承ではなく直接アクセス許可を与えて実行すると、 2005-01-13 09:28の投稿と同じ結果になりました。 ※ ちなみに今回のテストは同時に買った同一機種のTHINKPADで実行しました。 現在、私の端末は「プレインストールのOSの問題」という疑いを持って、 MicrosoftのCDからWinXPをクリーンインストール中です。 | ||||||||
|
投稿日時: 2005-01-18 15:38
/_/_/_/_/_/_/_/_/
/_/ 自己レス /_/_/ /_/_/_/_/_/_/_/_/ 解決致しました。 1. まず、WinXPのクリーンインストールの結果ですが、OKでした。 ASPNETとIUSR_xxxのアクセス許可が末端のファイルまで継承され、Oracleに接続することができました。 2. なぜ、アクセス許可が継承されなかったかというのは、IBMのサイトに情報がありました。 http://www-1.ibm.com/support/docview.wss?uid=pcd1syj0-021258c 「起動パーティション内のファイルやフォルダのアクセス許可の設定がNTFSファイルシステムの標準設定と異なる場合がある」そうです。 出荷時に内蔵しているバックアップパーティションにパッチをあてて、出荷時の状態に戻すべく復旧処理を行うと、問題は解消されました。 ただ、PCが初期状態に戻ってしまうので、私のマシンのみこの方法で対応しました。 3. それで、その他のTHINKPADについては、パーティションマジックでCドライブを分割して新たにDドライブを作成して、DドライブにOracleをインストールすることで回避しました。 起動パーティンションでなくなるので問題が解消されるようです。 とりあえずは、これで開発が進められます。 ななさん、Accessさん、お付き合いありがとうございました。 | ||||||||
