- PR -

ASP.NET から Oracle 10g へ OLEDB接続で予期しないエラー

投稿者投稿内容
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2005-01-13 08:28
引用:

BINフォルダにあるOCI.DLLには、権限が設定されていました。



念のために、ORACLE_HOMEに対して、
・すべての子オブジェクトのアクセス許可を元に戻し、継承可能なアクセス許可を継承できるようにする
をチェックして適用していただけませんか?

引用:

Filemonでどのように調査すれば良いか、教えていただけませんか?



Resultが「ACCESS DENIED」になっているものの、PathとOtherをご確認ください。
Maverick
会議室デビュー日: 2004/12/28
投稿数: 11
投稿日時: 2005-01-13 09:28
引用:

・すべての子オブジェクトのアクセス許可を元に戻し、継承可能なアクセス許可を継承できるようにする


というのがどこにあるのか分からなかったので、現状のセキュリティ設定のまま

引用:

Resultが「ACCESS DENIED」になっているものの、PathとOtherをご確認ください。


を調べてみたところ、
 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
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2005-01-13 13:08
引用:

というのがどこにあるのか分からなかったので、現状のセキュリティ設定のまま



フォルダのセキュリティ設定の、詳細設定のところです。
ご確認くださいませ。
Maverick
会議室デビュー日: 2004/12/28
投稿数: 11
投稿日時: 2005-01-13 16:53
引用:

・すべての子オブジェクトのアクセス許可を元に戻し、継承可能なアクセス許可を継承できるようにする


引用:

フォルダのセキュリティ設定の、詳細設定のところです。
ご確認くださいませ。


と言うのはWin2000での話ですか?
WinXPでは
・子オブジェクトに適用するアクセス許可エントリを親から継承し、それたをここで明示的に定義されているものに含める
というのがありましたので、ななさんのアドバイスをそれに読み替えて試してみましたが、結果は変わりませんでした。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2005-01-13 21:30
引用:

と言うのはWin2000での話ですか?



ご指摘のとおり...失礼いたしました。
WinXPの場合は、
・子オブジェクトすべてのアクセス許可エントリを、ここに表示されているエントリで子オブジェクトに適用するもので置換する
です。
Maverick
会議室デビュー日: 2004/12/28
投稿数: 11
投稿日時: 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をクリーンインストール中です。
Maverick
会議室デビュー日: 2004/12/28
投稿数: 11
投稿日時: 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さん、お付き合いありがとうございました。

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