2017-10-06 29 views
2

我制作了一个连接到Oracle9i数据库的.NET(4.6.1)应用程序。 此应用程序在我编写应用程序的机器上正常工作,但不在应用程序需要安装的机器上。仅在某些计算机上的.NET应用程序中出现Oracle9i连接错误(ora-12154)

我正在使用System.Data.OracleClient。我不知道什么是错的。我查了下面的东西。

  • 两台计算机都运行相同的Oracle客户端,并使用相同的TNS名称 配置。该配置从正在工作的开发机器 中复制而来。
  • 两台机器都需要正确的tnsnames.ora文件(使用 procmon进行验证)。
  • 两台机器都可以很好地连接SQLPlus。
  • 两台机器都使用相同的活动目录帐户进行测试。
  • 两台机器都为 连接提供了正确的用户名和密码设置。
  • 我尝试全新安装的oracle客户端没有成功。
  • 应用程序在两台机器上都以32模式运行。
  • 两台机器上运行Windows 7的任何人的

相同的版本知道还有什么可能是这个问题的原因是什么?

堆栈跟踪错误:

2017-10-05 16:40:48.7203 - ERROR: System.Data.OracleClient.OracleException (0x80131938): ORA-12154: TNS:servicenaam kon niet worden herleid. 

    bij System.Data.OracleClient.OracleException.Check(OciErrorHandle errorHandle, Int32 rc) 
    bij System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName) 
    bij System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions) 
    bij System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) 
    bij System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 
    bij System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
    bij System.Data.OracleClient.OracleConnection.Open() 
    bij QardPrint.Model.Locus.LocusFunctions.AddEmployee(Employee employee, String& errMsg) 

回答

0

我终于 “解决” 问题。由于某种原因,如果我的程序安装在Program Files(x86)文件夹中,则oracle连接无法在目标机器上运行。但是在我的开发机器上它确实在这个文件夹中工作。现在还不清楚为什么会这样。如果有人知道背后的原因,请留下回答。

相关问题