ODP.NET ORA-12154仅在作为服务运行时出现TNS错误

时间:2012-11-09 14:15:19

标签: vb.net oracle service odp.net

我正在VB.NET中编写一个服务,以便使用ODP.NET将数据连续记录到Oracle数据库

该应用程序最初是作为基本的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

我在这里缺少什么?

由于

1 个答案:

答案 0 :(得分:1)

我怀疑服务运行的用户需要整个oracle目录树的文件系统权限。这感觉就像一个权限问题,因为它无法解析连接标识符,但如果不需要则可以工作。

尝试为整个oracle客户端目录添加读取权限,以用于运行该服务的任何用户。