Инициализатор типа oracle dataaccess client oracleconnection выдал исключение
задан 27 мая '09, 03:05
4 Answers 4
If nothing else works. Try this:
This solved this for me.
Few things to check, may be one of them works:
Hope this helps, please reply either way. Thanks
I tried to change application platform to 64 bit and run the application but with no luck and alternatively installed the 32 bit ODAC with application platform as 32 bit but still error do not change nor it fixed.
- Uninstall Oracle.DataAccess
- Uninstall Oracle.ManagedDataAccess
- Uninstall Oracle.ManagedDataAccess.EntityFramework
- Reinstall all these.
This worked for me.
Setup
2 Projects
- Start Up (app.config)
- Includes Oracle (app.config)
Oracle connection parameters such as port, SID, connection name, user/pass and hostname are extracted from 'app.config'. The startup project has its own 'app.config'.
Problem
The Oracle connection string from 'app.config' is not getting extracted. There is no connection string. It's as if app.config does not exist.
Root Cause
The 'sectionGroup' element in startup project's App.config was deleted! As I've learned, without this element the corresponding 'sectionGroup' in app.config where Oracle is was ignored which also ignores connection string.
How or who deleted 'sectionGroup' element?
I have one user setting in startup projects' property that I removed. Since there's only one, Visual Studio deletes the entire 'userSettings' element in app.config. This is alright, no problem. However, Visual Studio also deleted the 'sectionGroup' element.
7 Answers 7
- Right click on project and select "Manage NuGet Packages. "
- Search for Oracle.ManagedDataAccess. Install it.
If you are using Entity Framework and your Visual Studio Version is 2012 or higher,then
- Again search for Oracle.ManagedDataAccess.EntityFramework. Install it.
- Use below name spaces in your .cs file:
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.EntityFramework;
Its done. Now restart your visual studio and build your code.
What do these packages do?
After installing these packages no additional Oracle client software is required to be installed to connect to database.
Install Oracle client on the PC you want to run your program on
Use Oracle.ManagedDataAccess.dll
I use this so that the computers I deploy onto don't need Oracle client installed.
N.B. in my opinion this is good for console apps but annoying if you intend to install your application, so I install the client in that case.
Ok, when you know for sure other applications that used the same process worked; on your new application make sure you have the data access reference and the three dll files.
I downloaded ODAC1120320Xcopy_32bit this from the Oracle site:
Include these 3 files within your project:
When I tried to create another application with the correct reference and files I would receive that error message.
The fix: Highlighted all three of the files and selected "Copy To Output" = Copy if newer. I did copy if newer since one of the dll's is above 100MB and any updates I do will not copy those files again.
I also ran into a registry error, this fixed it.
After that, everything worked smooth.
I hope it helps.
You need the oracle client driver installed for those classes to work.
There might be 3rd party connection frameworks out there that can handle Oracle, perhaps someone else might know of some specific ones.
Note that you can also get this error on a 64 bit machine if you have only installed the 32 bit oracle client.
This is an old, but still relevant question, and while the answers here are helpful no one answer fully addressed both of the OP's questions.
YES - if you are using ODP.NET, Unmanaged. This is the version that you typically install when you choose "Oracle Data Provider for .NET" in the Oracle Client installer (for example). You Download this from Oracle (just google it: Oracle URLs change often).
2. If yes, is there other way that I don't have to install them but still can run my application?
При этом, в папке где генерируется исполнимый файл DGV2.exe — имеются оракловские бибилиотеки:
Oracle.DataAccess.dll, Oracle.ManagedDataAccess.dll, OraOps11w.dll.
Ещё раз подчеркну — на большом компе (где оракл-сервер) данной проблемы нет.
Гугление не дало одназначного ответа.
Весьма благодарен за любые предложения!
P.S. Проблема — не сетевая точно!
Так как здесь (на ноуте) — отлично коннектиться к серверу приложение ORACLE SQL Developer,
также вилеколепно работает с сервером ORACLE (через ODBC-32 драйвер) моё приложение на C++ (MFC).
Здравствуйте, AlexGin, Вы писали:
AG>Вот такая ситуация с исключением:
AG>System.typeInitializationException
AG>Inner Exception
А если почитать какие версии клиента поддерживаются провайдером и сравнить? (предположение на основе текста Inner Exception)
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, AlexGin, Вы писали:
AG>>Вот такая ситуация с исключением:
AG>>System.typeInitializationException
AG>>Inner Exception
Doc>А если почитать какие версии клиента поддерживаются провайдером и сравнить? (предположение на основе текста Inner Exception)
Я предполагаю, что какие-то компоненты ставятся именно с сервером (с клиентом они не инсталлируются) отсюда и такая проблема.
Знать бы ещё какие!
Здравствуйте, AlexGin, Вы писали:
Doc>>А если почитать какие версии клиента поддерживаются провайдером и сравнить? (предположение на основе текста Inner Exception)
AG>Я предполагаю, что какие-то компоненты ставятся именно с сервером (с клиентом они не инсталлируются) отсюда и такая проблема.
AG>Знать бы ещё какие!
Насколько я знаю, никакие компоненты с сервера не ставятся.
но что эта библиотека за собой тянет — непонятно.
P.S. Как объяснить ещё и тот факт, что приложения, работающие через ODBC-32 на клиенте (на ноуте) — отлично видят оракловскую БД и работают с ней?
Это ИМХО означает, что нативный клиент в порядке. Верно?
Огромное спасибо, уважаемый Серёга.
Ларчик просто открывался:
когда скопировал на ноут файл Oracle.Data.Access.dll из сборки GAC-64 с большого компа — всё стало работать на ноуте
P.S. Ранее там (рядом с *.exe файлом проекта) находился файл Oracle.Data.Access.dll из комплекта клиента более ранней версии
— от этого и были проблемы!
Здравствуйте, AlexGin, Вы писали:
Doc>>А если почитать какие версии клиента поддерживаются провайдером и сравнить? (предположение на основе текста Inner Exception)
AG>Я предполагаю, что какие-то компоненты ставятся именно с сервером (с клиентом они не инсталлируются) отсюда и такая проблема.
AG>Знать бы ещё какие!
Насколько я знаю, никакие компоненты с сервера не ставятся.
При этом, в папке где генерируется исполнимый файл DGV2.exe — имеются оракловские бибилиотеки:
Oracle.DataAccess.dll, Oracle.ManagedDataAccess.dll, OraOps11w.dll.
Ещё раз подчеркну — на большом компе (где оракл-сервер) данной проблемы нет.
Гугление не дало одназначного ответа.
Весьма благодарен за любые предложения!
P.S. Проблема — не сетевая точно!
Так как здесь (на ноуте) — отлично коннектиться к серверу приложение ORACLE SQL Developer,
также вилеколепно работает с сервером ORACLE (через ODBC-32 драйвер) моё приложение на C++ (MFC).
Здравствуйте, AlexGin, Вы писали:
AG>Вот такая ситуация с исключением:
AG>System.typeInitializationException
AG>Inner Exception
А если почитать какие версии клиента поддерживаются провайдером и сравнить? (предположение на основе текста Inner Exception)
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, AlexGin, Вы писали:
AG>>Вот такая ситуация с исключением:
AG>>System.typeInitializationException
AG>>Inner Exception
Doc>А если почитать какие версии клиента поддерживаются провайдером и сравнить? (предположение на основе текста Inner Exception)
Я предполагаю, что какие-то компоненты ставятся именно с сервером (с клиентом они не инсталлируются) отсюда и такая проблема.
Знать бы ещё какие!
но что эта библиотека за собой тянет — непонятно.
P.S. Как объяснить ещё и тот факт, что приложения, работающие через ODBC-32 на клиенте (на ноуте) — отлично видят оракловскую БД и работают с ней?
Это ИМХО означает, что нативный клиент в порядке. Верно?
Огромное спасибо, уважаемый Серёга.
Ларчик просто открывался:
когда скопировал на ноут файл Oracle.Data.Access.dll из сборки GAC-64 с большого компа — всё стало работать на ноуте
P.S. Ранее там (рядом с *.exe файлом проекта) находился файл Oracle.Data.Access.dll из комплекта клиента более ранней версии
— от этого и были проблемы!
7 ответы
ответ дан 27 мая '09, 08:05
Возможны два варианта:
Установите клиент Oracle на компьютер, на котором вы хотите запустить свою программу.
использование Oracle.ManagedDataAccess.dll
Я использую это, чтобы компьютеры, на которых я развертываю, не нуждались в установке клиента Oracle.
NB, на мой взгляд, это хорошо для консольных приложений, но раздражает, если вы собираетесь установить свое приложение, поэтому я устанавливаю клиент в этом случае.
ответ дан 28 авг.
Самый простой способ.
- Щелкните правой кнопкой мыши проект и выберите "Управление пакетами NuGet . "
- Найдите Oracle.ManagedDataAccess. Установите его.
Если вы используете Entity Framework ваши способы оплаты и счета-фактуры. Visual Studio Версия 2012 или выше,тогда
- Снова ищем Oracle.ManagedDataAccess.EntityFramework. Установите его.
- Используйте указанные ниже пространства имен в своем файле .cs:
с использованием Oracle.ManagedDataAccess.Client;
с использованием Oracle.ManagedDataAccess.EntityFramework;
Это сделано. Теперь перезапустите визуальную студию и создайте свой код.
Что делают эти пакеты?
После установки этих пакетов не требуется установка дополнительного клиентского программного обеспечения Oracle для подключения к базе данных.
Хорошо, если вы точно знаете, что другие приложения, использующие тот же процесс, работали; в вашем новом приложении убедитесь, что у вас есть ссылка на доступ к данным и три файла dll .
Я скачал ODAC1120320Xcopy_32bit это с сайта Oracle:
Включите эти 3 файла в свой проект:
Исправление: выделены все три файла и выбрано «Копировать в вывод» = Копировать, если они более новые. Я скопировал, если новее, так как одна из dll превышает 100 МБ, и любые обновления, которые я делаю, не будут копировать эти файлы снова.
Я также столкнулся с ошибкой реестра, это исправило ее.
После этого все заработало.
Я надеюсь, что это помогает.
ответ дан 24 мар '17, в 17:03
Для работы этих классов необходим установленный драйвер клиента oracle.
Могут существовать сторонние структуры подключения, которые могут обрабатывать Oracle, возможно, кто-то еще может знать о некоторых конкретных.
ответ дан 27 мая '09, 07:05
Обратите внимание, что вы также можете получить эту ошибку на 64-битной машине, если вы установили только 32-битный клиент Oracle. - Клас Меллборн
ответ дан 27 мая '09, 08:05
Привет, @tuinstoel, обратите внимание, что ссылка, которую вы предоставили выше, теперь мертва. - Чилидзи Мудау
2. Если да, то есть ли другой способ, которым мне не нужно их устанавливать, но я все еще могу запустить свое приложение?
Поиск и устранение неисправностей:
So I did that the application works fine on server but when application is run on client machine then it gives below error.
I guess you have googled the error message. Anything found so far? The first two hits are already stackoverflow questions with the same title.
@TimSchmelter Yes I search and just found that 3 ODAC's dll need to be added which I did but no luck so far.
Читайте также: