OracleConnection выдает пустое исключение

Я пытаюсь подключиться к своей базе данных Oracle с моего нового компьютера. Я только что установил Visual Studio и ODAC. Но когда я пытаюсь выполнить простое соединение, я получаю исключение с пустым сообщением, пустым источником, пустым номером, просто с кодом ошибки -2147467259.

OracleConnection Prueba;
Prueba = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX.XXX.XXX.XXX)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XXXX)));User Id=XXX;Password=XXX;Pooling=true;Max Pool Size=10;Min Pool Size=1");
Prueba.Open();

Сведения об исключении
Это код Exception.ToString():

«Oracle.DataAccess.Client.OracleException в Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
в Oracle.DataAccess.Client.OracleException. HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
в Oracle.DataAccess.Client.OracleConnection.Open()
в OracleConnectionS.Program.Main(String[] args) в C:\Users\ Simetri\Documents\Visual Studio 2010\Projects\OracleConnection\OracleConnection\Program.cs:строка 19"

Любая идея о том, почему это может происходить?

ОБНОВЛЕНИЕ

Если я запускаю визуальную студию в качестве администратора, я не получаю исключение, и я могу нормально подключиться к базе данных.

Я попытался предоставить разрешение ПОЛНЫЙ КОНТРОЛЬ для каталога Oracle C:\Oracle. Но если я запускаю Visual Studio обычным способом (не как администратор), я продолжаю получать исключение.

Справочная информация
– Я использую 64-разрядную версию Windows 7
– Visual Studio 2010
– Я могу подключиться, просто найдя с помощью SQL*PLUS


person Laggel    schedule 17.09.2012    source источник
comment
Вы пытались подключиться за пределами VS, например. используя TNSPing, а затем с помощью SQL Developer?   -  person Justin Harvey    schedule 17.09.2012
comment
@JustinHarvey да, и все работает отлично!   -  person Laggel    schedule 17.09.2012
comment
@Laggel Как ты это исправил?   -  person Default    schedule 17.09.2012
comment
@Laggel: Пожалуйста, покажите вывод ex.ToString()   -  person Daniel Hilgarth    schedule 17.09.2012
comment
@DanielHilgarth Oracle.DataAccess.Client.OracleException в Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)\r\n в Oracle.DataAccess.Client. OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)\r\n в Oracle.DataAccess.Client.OracleConnection.Open()\r\n в OracleConnectionS.Program.Main(String[] args) в C :\Users\Simetri\Documents\Visual Studio 2010\Projects\OracleConnection\OracleConnection\Program.cs:строка 19   -  person Laggel    schedule 17.09.2012


Ответы (3)


Итак, после установки всевозможных версий ODAC и поиска каждого сообщения, связанного с этим.

В конце концов, чистая установка 32-битной версии стала решением.

  • Сначала вам нужно удалить все ваши другие клиенты оракула, которые вы когда-либо устанавливали.
  • После этого найдите любую версию ODAC, которую вы хотите (самую последнюю, если это возможно), но обязательно загрузите 32-битную версию.

ЗАЧЕМ?

Ну, это связано с версией, в которой разработана Visual Studio. Если вы разрабатываете консольное приложение, у вас не будет проблем с клиентской версией, но если вы используете веб-проект, вам определенно нужна 32-битная версия.

  • Наконец, убедитесь, что для всех ваших проектов в Visual Studio целевая платформа является «32-битной».
  • и укажите новую Oracle.DataAccess.dll, которую вы только что установили.
person Laggel    schedule 19.12.2013

Пожалуйста, попробуйте переформатировать строку подключения в эту форму и посмотрите, как это работает.

<add name="LoisDataAccess" connectionString="Data Source=LOISPRD;Persist Security Info=True;User ID=ABC;Password=DEF" providerName="System.Data.OracleClient" />
person Andrew Walters    schedule 17.09.2012
comment
Я не использую клиент Microsoft. Я использую клиент Oracle using Oracle.DataAccess.Client; - person Laggel; 17.09.2012
comment
Хорошо, поэтому имя провайдера будет другим. Я пытался предположить, что если вы удалите ненужные вещи из строки подключения, это может решить вашу проблему. Все, что вам нужно, это источник данных и имя пользователя/пароль. - person Andrew Walters; 17.09.2012

Если клиент, который вы используете, является «мгновенным клиентом», вам может быть лучше скопировать несколько Oracle-DLL в свое решение — пошаговое руководство см. это.

ЕСЛИ возможно, я бы рекомендовал использовать другого поставщика .NET... по моему опыту, большинство коммерческих из них гораздо менее проблематичны, чем поставщик Oracle .NET - см. здесь на SO.

person Yahia    schedule 17.09.2012