仅在某些机器上的 .NET 应用程序中出现 Oracle9i 连接错误 (ora-12154)
Oracle9i connection error (ora-12154) in .NET application only on some machines
我创建了一个连接到 Oracle9i 数据库的 .NET(4.6.1) 应用程序。
该应用程序在我编写应用程序的机器上运行正常,但在需要安装该应用程序的机器上运行不正常。
我正在使用 System.Data.OracleClient。我不知道可能出了什么问题。我检查了以下内容。
- 两台机器 运行 具有相同 TNS 名称的相同 oracle 客户端
配置。这个配置是从开发中复制过来的
工作的机器。
- 两台机器都需要正确的 tnsnames.ora 文件(使用验证
procmon).
- 两台机器都可以很好地连接 SQLPlus。
- 两台机器都使用相同的活动目录帐户进行测试。
- 两台机器都设置了正确的用户名和密码
连接。
- 我尝试全新安装 oracle 客户端,但没有成功。
- 应用程序运行在两台机器上都以 32 模式运行。
- 两台机器运行版本相同Windows7
有人知道这个问题还有什么可能的原因吗?
错误的堆栈跟踪:
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)
我终于"solved"了这个问题。出于某种原因,如果我的程序安装在 Program Files(x86)
文件夹中,则 oracle 连接无法在目标计算机上运行。但是在我的开发机器上它确实在这个文件夹中工作。我仍然不清楚这是为什么。如果有人知道这背后的原因,请留下答案。
我创建了一个连接到 Oracle9i 数据库的 .NET(4.6.1) 应用程序。 该应用程序在我编写应用程序的机器上运行正常,但在需要安装该应用程序的机器上运行不正常。
我正在使用 System.Data.OracleClient。我不知道可能出了什么问题。我检查了以下内容。
- 两台机器 运行 具有相同 TNS 名称的相同 oracle 客户端 配置。这个配置是从开发中复制过来的 工作的机器。
- 两台机器都需要正确的 tnsnames.ora 文件(使用验证 procmon).
- 两台机器都可以很好地连接 SQLPlus。
- 两台机器都使用相同的活动目录帐户进行测试。
- 两台机器都设置了正确的用户名和密码 连接。
- 我尝试全新安装 oracle 客户端,但没有成功。
- 应用程序运行在两台机器上都以 32 模式运行。
- 两台机器运行版本相同Windows7
有人知道这个问题还有什么可能的原因吗?
错误的堆栈跟踪:
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)
我终于"solved"了这个问题。出于某种原因,如果我的程序安装在 Program Files(x86)
文件夹中,则 oracle 连接无法在目标计算机上运行。但是在我的开发机器上它确实在这个文件夹中工作。我仍然不清楚这是为什么。如果有人知道这背后的原因,请留下答案。