Я пытаюсь использовать dbdeploy для управления изменениями схемы Oracle.Я могу успешно запустить его из командной строки, чтобы он генерировал мои сценарии изменений, но когда я пытаюсь выполнить его с помощью задачи dbdeploy NAnt, выполняемой через TeamCity, я получаю сообщение об ошибке:
System.Data.OracleClient requires Oracle client software
version 8.1.7 or greater.
Я делаюустановить клиентское программное обеспечение Oracle 10.2.0.2.Это первая запись в системном пути, и приложение dbdeploy.exe способно успешно согласовать соединение с Oracle.Код dbdeploy динамически загружает сборку System.Data.OracleClient, которая, в свою очередь, пытается использовать биты клиента Oracle для связи с базой данных.Это то, что не работает в моей среде NAnt.
Я проверил следующие пункты:
- Один и тот же пользовательский идентификатор запускает процесс в обоих случаях
- в обоих случаях используется один и тот же рабочий каталог
- В обоих случаях выполняется один и тот же код dbdeploy с одинаковыми предоставленными параметрами
- В обоих случаях используется одна и та же строка подключения к базе данных
- В обоих случаях динамически загружается одна и та же сборка ADO.NET (System.Data.OracleClient, версия = 1.0.5000.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089)
Вот вершинатрассировка стека во время ошибки:
at System.Data.OracleClient.OCI.DetermineClientVersion()
at System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction
(String userName, String password, String serverName,
Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
at System.Data.OracleClient.OracleInternalConnection..ctor(
OracleConnectionString connectionOptions)
at System.Data.OracleClient.OracleConnectionFactory.CreateConnection(
DbConnectionOptions options, Object poolGroupProviderInfo,
DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(
DbConnection owningConnection, DbConnectionPool pool,
DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(
DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(
DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(
DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(
DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(
DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OracleClient.OracleConnection.Open()
at Net.Sf.Dbdeploy.Database.DatabaseSchemaVersionManager.
GetCurrentVersionFromDb()
Мой главный вопрос заключается в следующем: как я могу узнать, что отличается в этих работающих средах, чтобы понять, почему мое клиентское программное обеспечение Oracle не может быть загружено?