- PR -

[ASP.NET]oracleの接続エラーについて

投稿者投稿内容
xkimura
会議室デビュー日: 2002/12/18
投稿数: 11
お住まい・勤務地: 新潟県
投稿日時: 2003-01-21 08:48
VB.NETで以下のコードを実行したところoracleエラーが発生して接続
ができませんでした。
動作環境は次の通りですが同様の環境で接続できる端末もあります。
何が原因なのかいろいろ調べたのですが、インストールの手順なのか
ファイルの設定なのか原因がつかめません。解決方法をご存知の方が
いましたらご教授願います。

[動作環境]
サーバー
Windows2000 Server
Oracle 8.1.7

クライアント
WindowsXP Pro
Oracle 8.1.7(クライアントソフト)
IIS 5.1


[ORACLE ERROR]
"ORA-12154: TNS: サービス名を解決できませんでした。 "


[実行コード]
---------------------------------------------------------------
Dim Cn As OleDb.OleDbConnection

Cn = New OleDb.OleDbConnection("Provider=MSDAORA.1" _
& ";Data Source=" & tnsname _
& ";User Id=" & userid _
& ";Password=" & password _
& "; ")

Cn.Open()

---------------------------------------------------------------
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2003-01-21 08:58
Net8の設定は合っていますか?
推測ですが、単純にOracleへの接続エラー(Net8設定ミス)だと思うのですが....
xkimura
会議室デビュー日: 2002/12/18
投稿数: 11
お住まい・勤務地: 新潟県
投稿日時: 2003-01-21 09:31
すいません、説明不足でした。エラーが発生する端末からは正常にoracleへ接続できませす(SQL*Plusなど)。またWindwos Formで同様のコードを実行しても接続できます。
つまりASP.NETからの接続のみエラーが発生するのです。
同じような現象になった方はいますでしょうか。
引き続き何が情報がございましたら教えてください。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-01-21 16:42
 確認です。

・HTTPサーバのあるマシンでTNSの設定をしてありますよね?
・データソースは「システムDSN」で設定しましたよね?
・ORACLE_HOME以下、Everyoneが参照可能にセキュリティを変更しましたよね?

 ASP.NETはaspnet_wpというサービスがASPNETというユーザで実行されており、このユーザは.NET FrameworkにSPを当てると、権限が低くなっています

 なお、ドライバはMS提供のモノより、Oracle提供のモノを使う方がいいです(Microsoft ODBC for Oracleは、結局Oracleのドライバを呼び出すので)。
xkimura
会議室デビュー日: 2002/12/18
投稿数: 11
お住まい・勤務地: 新潟県
投稿日時: 2003-01-21 17:36
> ・ORACLE_HOME以下、Everyoneが参照可能にセキュリティを変更しましたよね?
>
>  ASP.NETはaspnet_wpというサービスがASPNETというユーザで実行されており、このユーザは.NET FrameworkにSPを当てると、権限が低くなっています

ありがとうございます。解決しました。
原因は"TNSNAMES.ORA"ファイルのセキュリティに"Users"が追加されていない為にASPNETがファイルを読めない状態になっていたのがエラーの原因でした。
SEIKEI
会議室デビュー日: 2004/07/22
投稿数: 4
お住まい・勤務地: 福岡県
投稿日時: 2004-07-22 19:44
xkimuraさんの書き込み (2003-01-21 08:48) より一部引用:
VB.NETで以下のコードを実行したところoracleエラーが発生して接続
ができませんでした。

[動作環境]
サーバー
Windows2000 Server
Oracle 9.2.0.1
IIS 5.1

クライアント
Windows2000
Oracle 9.2.0.1(クライアントソフト)

[ORACLE ERROR]
"ORA-12154: TNS: サービス名を解決できませんでした。 "

※ただしEVERYONEにアクセス権を与えた場合だけに起こります。

[実行コード]
---------------------------------------------------------------
<HTML>
<title>表示システム Ver.2004.7</title>
<BODY>
<% Call Echo %>
</body>
</html>

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Echo
Set OraSess = Server.CreateObject("OracleInProcServer.XOraSession")
Set OraDb = OraSess.DbOpenDatabase("サービス名","ユーザ名/パスワード",clng(3))

最終行で止まります。
サービス名の設定はOKだと思っています。
何かございましたらヒントをお願いします。
---------------------------------------------------------------
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-22 19:54
引用:

SEIKEIさんの書き込み (2004-07-22 19:44) より:

VB.NETで以下のコードを実行したところoracleエラーが発生して接続
ができませんでした。


で、何というエラーですか?
 最近のエラーメッセージには、エラーの種類だけでなく、その原因、場合によっては修正方法も含まれています。また、最終的にはエラーAだけれど、その原因となったエラーB、エラーCが含まれています。エラーAだけみて修正しようとしても、根本の原因がわからなければ修正できないわけです。
 エラーメッセージは省略せず、ソースファイル以外はすべて正確に転記してください。


引用:

[ORACLE ERROR]
"ORA-12154: TNS: サービス名を解決できませんでした。 "

※ただしEVERYONEにアクセス権を与えた場合だけに起こります。
Set OraDb = OraSess.DbOpenDatabase("サービス名","ユーザ名/パスワード",clng(3))

サービス名の設定はOKだと思っています。


 Everyoneに実行権をつけるとサービス名を解決できない、では、つけないときは?
 また、サービス名の設定はOKだと思う根拠は?解決できないと言っているのだから、そこが間違っているわけです。sqlplusやOEMでは接続できるのでしょうか?できるなら、「sqlplusでは接続できる(コンソールツールで「sqlplus」とすると、ユーザ名とパースワードを聞かれ、接続できる)ので、サービス名は間違っていないと思います」と、根拠を明らかにしてください。実はあなたの確認方法が間違っている、という可能性もあるのです(この例は、確認方法が間違っている例です)。
SEIKEI
会議室デビュー日: 2004/07/22
投稿数: 4
お住まい・勤務地: 福岡県
投稿日時: 2004-07-23 09:29
初心者の上,説明不足で申し訳ございません。

sqlplusではユーザ名とパスワードで接続できました。
エラーのメッセージの部分ですが,


ページを表示できません
接続しようとするページに問題があるため、そのページを表示できません。
-------------------------------------------------------------------------------
対処方法
[更新] をクリックするか、後で再度実行してください。
次のホームページ 192.168.100.201を開き、 必要な情報が記載されたページへのリンクを探します。
HTTP 500.100 - 内部サーバー エラー - ASP エラー
インターネット インフォメーション サービス
-------------------------------------------------------------------------------
技術情報 (サポート担当者用)
エラー タイプ
Oracle Automation (0x800A01B8)
接続できません。, Error while trying to retrieve text for error ORA-12154
/position_view.ASP, line 12

ブラウザ タイプ
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)

ページ
GET /position_view.ASP
-------------------------------------------------------------------------------
補足しますが
position_view.ASP, line 12

Set OraDb = OraSess.DbOpenDatabase("サービス名","ユーザ名/パスワード",clng(3))
の部分です。
クライアント側のブラウザのバージョン及びOSに関係なくエラーが確認できます。
それと,Everyoneに実行権をつけない場合は正常に接続します。ただし権利がないので当然パソコンのログオン画面が表示され入力を求められます。

まだ何か情報が足りなければ教えてください。
情報不足で申し訳ございませんでした。

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