- - PR -
VB.NETからOracle9iへの接続でTNSエラー
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-02 11:40
初めて投稿します。
VB.NETでOracle9iへ接続しようとしていますがうまくいきません。 他のスレッドをみたり色々と調べて見たのですが分からないので、 質問させてください。 [開発環境] <サーバー> WindowsServer2003 Standard Edition SP1 Oracle9.2 <クライアント> WindowsXP Pro SP2 VisualStadio.Net 2003 .Net FrameWork1.1 Oracle9.2 Oracle Net Managerや管理ツールのODBCでの接続はうまく行くのですが、 プログラムから接続しようとすると "ORA-12154 TNS:サービス名が解決できませんでした" というメッセージが出てしまいます。 OleDBConnectionとOracleClient.OracleConnectionの両方で チャレンジしましたが両方とも同じ結果でした。 以下がOracleの設定とソースコードです。 <Oracleの設定> ネット・サービス名:DataBase ホスト名:Host サービス名:Service ユーザーID:UserID パスワード:Password <ODBCの設定> データソース名:DataBase TNSサービス名:DataBase ユーザーID:UserID パスワード:Password <OleDBConnection> Imports System.Data Imports System.Data.OleDb strConnect = "Provider=MSDAORA.1;User ID=UserID;Password=Password;" & _ "Data Source=Host;database=DataBase;Persist Security Info=False" Dim DbCon As New OleDbConnection(strConnect) DbCon.Open() DbCon.Close() DbCon = Nothing <OracleClient> Imports System.Data Imports System.Data.OracleClient strConnect = "User ID=UserID;Password=Password;Data Source=DataBase" Dim OraCon As New OracleClient.OracleConnection(strConnect) OraCon.Open() OraCon.Close() OraCon = Nothing またサーバーエクスプローラーで接続を追加した場合も、 接続のテストではうまく行くのですが、 実際にフォームにコントロールを貼り付けてオープンしようとすると 同様に"ORA-12154 TNS:サービス名が解決できませんでした"の メッセージが出てきます。 VB.NETもOracleも初めてなのですごく初歩的な質問を しているかもしれませんがよろしくお願いします。 | ||||
|
投稿日時: 2005-09-02 12:04
お世話になります。
検索したらでてきました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7757&forum=7&start=0 | ||||
|
投稿日時: 2005-09-02 12:10
初投稿ということなので、念のため案内。
Oracle まだでしたら、ご覧になって下さい。 とりあえずTNSエラーと聞いたら、 私の場合こんなの確認しますかね。 ・「tnsname.ora」ファイルの設定内容 ・SQLPlus!で接続できるか ・サービスがあがっているか DBにdと疎い私にはこのへんが限界w こっから適当なことを書きます。 VB.net+Oracleで開発する際は、 ADO.netかODP.netを使うのが 一般的ではないかと(勝手に)思ってます。 OleDBConnectionを使用されているので、 VB6からの自動アップグレードを使ったらんでしょうかね? #被ったので一部削除。あぅ [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-09-02 12:15 ] | ||||
|
投稿日時: 2005-09-02 16:30
返信ありがとうございます。
>なおこ(・∀・)さん 参照のページ、確認しました。 SQL Plusで「connect ユーザ名/パスワード@サービス名」とした場合、 問題なく接続できています。 ただ、「connect ユーザー名/パスワード@サービス名.world」とすると 「ORA-12154 TNS サービス名を解決できませんでした」という メッセージが返ってきました。 またリスナーのリスニング位置には サービス・ネーミングと同じ設定で登録しているのですが、 「%ORACLE_HOME%TNSListener」というサービスが登録されてないという ところで行き詰りました。 代わりに「Oracle%ORACLE_HOME_NAMD%ClientCache」という サービスがありましたが、開始しようとするとアプリケーションエラー 「"0x7c951e58"の命令が"0x00000000"のメモリを参照しました。 メモリが"read"になることはできませんでした」が発生してしまいました。 もしかするとこの辺に原因があるのでしょうか? >葉瀬崎浩樹さん tnsname.oraには *********************** DataBase = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = HOST)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = Service) ) ) ********************** という風に記述されていましたが、問題ありますでしょうか? SQLPlusでは「connect ユーザ名/パスワード@サービス名」とした場合は 問題なく接続できています。 サービスがあがっているというのはNetManagerのサービス・ネーミングが 構成されているか?ということでしょうか? それでしたら問題なく構成してありましたし、接続テストもうまく行っています。 もしWindowsの管理ツールのサービスのことでしたら どのサービスか教えていただけますでしょうか? 管理ツールのサービスも上述のとおりの状態で、 どれを開始したらよいのかも分からない状態です。 お手数をおかけしますが、よろしくお願いします。 | ||||
|
投稿日時: 2005-09-02 18:31
私の場合「Net Configuration Assistant」を使うことが多かったので、 tnsname.oraの内容までちゃんと覚えてません。。 重要な設定情報ですので、かまかけ半分で出して頂きました。 (気を悪くされたらごめんなさい) DB関係が疎いのとORACLE環境が無いので、 私の情報は、適当にさっぴいて読んでくださいね。 で、それだけじゃあまりにアレなんで、 参考になりそうなもの置いていきます。 transname.oraのサンプル Net Configuration Assistant ODP.NET のインストール (VB.NETで)oo4oでoracle接続するには? [ASP.NET]oracleの接続エラーについて Net Configuration Assistantの使い方(10gだけど) 第1章:データベース構築基礎 検索:oleDBConnection VB.net 接続 #リンクを編集追加 [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-09-02 18:40 ] | ||||
|
投稿日時: 2005-09-02 18:44
DBサーバ上で「OracleOraHome92TNSListener」というサービスは起動しているでしょうか?
Windowsの管理ツールから確認できるサービスです。 名称は異なるかもしれませんが、TNSListenerというサービスを探してみて下さい。 | ||||
|
投稿日時: 2005-09-02 18:52
お世話になります。
TNSListenerについては,上で私が張ったURLで お話があったような。 私も環境がない&DBは詳しくないので…すみません…。 # 日本語を修正しました。 # 修正しておかしくなった日本語を修正しました。 [ メッセージ編集済み 編集者: なおこ(・∀・) 編集日時 2005-09-02 18:54 ] [ メッセージ編集済み 編集者: なおこ(・∀・) 編集日時 2005-09-02 18:55 ] | ||||
|
投稿日時: 2005-09-06 09:12
もし
・ORAファイルの設定(NetConfigなどでの設定) ・データプロバイダの設定(ユーザIDだとかパスワードだとか) らが問題なくて、まだ解決に至っていない場合ですが、念のため プロジェクトファイルがある場所へのフルパスに含まれる文字に 問題がないかどうかも調べてみてください。 私の場合は半角の()が問題で、同様のエラーが発生し数日費やし ました(^^; ここの情報(どのスレかは失念しました)で解決に至りました。 |