Я пытаюсь подключиться к моей базе данных 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 at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, соединение OracleConnection, IntPtr opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, Object src, Строковая процедура)
в 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"
Любая идея о том, почему это могло произойти?
ОБНОВЛЕНИЕ
Если я запускаю визуальную студию в качестве администратора, я не получаю исключение, и я могу просто подключиться к базе данных.
Я попытался предоставить разрешение FULL CONTROL для каталога Oracle C:\Oracle
. Но если я запускаю Visual Studio в обычном режиме (не как администратор), я получаю исключение.
Фоновая информация
- Я использую 64-разрядную версию Windows 7
- Visual Studio 2010
- Я могу подключиться только найти с SQL * PLUS
Итак, после установки всех видов ODAC и поиска по каждому сообщению, связанному с этим.
В конце концов, чистая установка 32-битной версии была решением.
Почему?
Ну что-то связано с версией, в которой разрабатывается Visual Studio. Если вы разрабатываете консольное приложение, у вас не будет проблем с клиентской версией, но если вы используете веб-проект, вам определенно нужно 32-битное версия.
Попробуйте переформатировать строку подключения в эту форму и посмотреть, как она работает.
<add name="LoisDataAccess" connectionString="Data Source=LOISPRD;Persist Security Info=True;User ID=ABC;Password=DEF" providerName="System.Data.OracleClient" />
using Oracle.DataAccess.Client;
Если клиент, которым вы пользуетесь, является "Мгновенным клиентом", тогда вам может быть лучше, скопировав некоторые Oracle-DLL в ваше решение, - для перехода от просмотра см. это.
ЕСЛИ я мог бы рекомендовать использовать другого .NET-провайдера... по моему опыту большинство коммерческих гораздо менее проблематично, чем поставщик Oracle.NET - см. здесь, на SO.