Ошибка соединения Oracle9i (ora-12154) в приложении.NET только на некоторых машинах

Я создал приложение.NET(4.6.1), которое подключается к базе данных Oracle9i. Это приложение отлично работает на компьютере, на котором я написал приложение, но не на компьютере, на котором необходимо установить приложение.

Я использую System.Data.OracleClient. Я понятия не имею, что может быть не так. Я проверил следующие вещи.

  • На обеих машинах работает один и тот же клиент Oracle с одинаковой конфигурацией имен TNS. Эта конфигурация скопирована с компьютера разработчика, на котором она работает.
  • Обе машины запрашивают правильный файл tnsnames.ora (проверено с помощью procmon).
  • Обе машины могут нормально соединяться с SQLPlus.
  • Обе машины тестируются с одной и той же активной учетной записью каталога.
  • Обе машины имеют правильные имя пользователя и пароль для подключения.
  • Я попробовал новую установку клиента oracle без успеха.
  • Приложение работает в режиме 32 на обеих машинах.
  • На обеих машинах установлена ​​одинаковая версия Windows 7

Кто-нибудь знает, что еще может быть причиной этой проблемы?

Stacktrace ошибки:

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)

1 ответ

Решение

Я наконец "решил" проблему. По какой-то причине соединение оракула не работает на целевой машине, если моя программа была установлена ​​в Program Files(x86) папка. Однако на моей машине разработки он работал в этой папке. Мне до сих пор неясно, почему это так. Если кто-то знает причину этого, пожалуйста, оставьте ответ.

Другие вопросы по тегам