4

ODP.NETを使用してOracle DBにデータを継続的に記録するサービスをVB.NETで作成しています

このアプリケーションは、もともと基本的な Windows フォーム アプリとして作成され、動作しますが、サービスに移植すると、TNS ファイルを認識できず、次のエラー メッセージが表示されます。

Service cannot be started. Oracle.DataAccess.Client.OracleException
ORA-12154:TNS:could not resolve the connect identifier specified    

したがって、次の例の接続文字列を使用する場合

"Data Source= example;User Id= user;Password=password;"

ORA-12154 が発生します

完全な TNS エントリをアプリに直接提供するとします。

"Data Source= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = EXAMPLE)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = EXAMPLE) ) );User Id= user;Password=password;"

その後は機能しますが、最初にアプリをフォームアプリケーションとして開発したときは、どちらの方法でも機能しました。

環境変数が正しく設定されていない可能性があると思いましたが、必要なシステム変数 (ORACLE_HOME / TNS_ADMIN / oracle フォルダーを PATH に追加) を追加しましたが、機能しません。

サービスが実行されている/インストールされたパスに括弧が含まれていません。プロセスモニターでプロセスを確認しましたが、正しい環境変数で起動されているようです (ORACLE_HOME / TNS_ADMIN / PATH はすべてそこにあり、正しい) . テストに使用されているマシンは Win XP を実行しています

ここで何が欠けていますか?

ありがとう

4

1 に答える 1

1

サービスを実行するユーザーには、Oracle ディレクトリ ツリー全体に対するファイル システム権限が必要になるのではないかと思います。接続識別子を解決できないため、これはアクセス許可の問題のように感じますが、必要がなければ機能します。

サービスを実行しているユーザーに対して、Oracle クライアント ディレクトリ全体に読み取り権限を追加してみてください。

于 2012-11-09T14:36:51.083 に答える