02.10.2015, 18:40 | #1 |
Участник
|
Ax2009: подключение к Oracle
Подскажите, пж, какие библиотки/ драйвера надо установить для подключения к внешней базе Oracle?
Не нашла в самой DAX какого-то примера с подключением к Oracle. Как писать строку подключения? Пишу код X++: static void UCSCinema(Args _args) { CCADOConnection connection; ; connection = new CCADOConnection(); connection.open( "Provider = MSDAORA;"+ "User ID=" + 'пользователь'+ ";" + "Password=" + 'password' + ";" + "Data Source=" + '666.66.6.66:1521:xe' ); } Метод "open" в COM-объекте класса "ADODB.Connection" возвратил код ошибки 0x80004005 (E_FAIL), который означает: Не найден клиент Oracle и сетевые компоненты. Компоненты предоставляются корпорацией Oracle и входят в клиентское программное обеспечение Oracle версии 7.3.3 или более поздней. Невозможно использовать данный поставщик, пока не будут установлены эти компоненты. На клиентской машине, где джоб запускаю, развернула ODAC12Xcopy_x64. Последний раз редактировалось Arahnid; 02.10.2015 в 18:48. |
|
02.10.2015, 18:44 | #2 |
Участник
|
Нужно установить клиента Oracle DB, также есть возможность его не ставить, а просто распаковать - см. Instant Client. Примеры строк подключения можно найти тут: http://www.connectionstrings.com/oracle/
Последний раз редактировалось gl00mie; 02.10.2015 в 18:46. |
|
05.10.2015, 12:37 | #3 |
Участник
|
Установила, но ошибка все равно сохранилась. Что - то надо в самой аксапте настраивать?
|
|
06.10.2015, 19:49 | #4 |
Участник
|
Теперь возникла проблема с кодировкой.
Исходно она NLS_NCHAR_CHARACTERSET = AL16UTF16. Русский символы преобразовываются крикозяблы. Попробовала разными способами. Один из примеров: X++: connection.open( "Provider = MSDAORA;"+ "CharSet = CL8MSWIN1251;"+ "Data Source=" + 'premierabo'+ ";"+ "User ID=" + 'premierabo'+ ";" + "Password=" + 'approved'+ ";" ); "NLS_LANG=RUSSIAN_CIS.UTF8 ;"+ "LANG=ru_RU.UTF-8;" - тоже не работает. На клиенте в regedit в NLS_LANG поставила AMERICAN_AMERICA.CL8MSWIN1251 , потом RUSSIAN_CIS.CL8MSWIN1251. Не работает Последний раз редактировалось Arahnid; 06.10.2015 в 21:18. |
|
09.10.2015, 22:01 | #5 |
Участник
|
Решение для Win7
На компьютере, где будет выполняться соединение и, соответственно, установлен клиент Oracle, необходимо Мой компьютер - Правая кнопка мыши Свойства - подраздел Advanced system settings - tab Advanced - Environment Variables - в Переменные среды пользователя добавить Имя переменной - NLS_LANG Значение переменной - RUSSIAN_RUSSIA.CL8MSWIN1251 Далее перезагрузить компьютер. |
|
12.10.2015, 17:45 | #6 |
Британский учённый
|
Вытащил код который я писал еще под 2009 версию - интеграция АХ к БД Оракл другой системы. Как рабочий пример.
X++: protected boolean connect() { LoginProperty lp; DEV_STConnect stConnect = DEV_STConnect::find(serviceName); ; lp = new LoginProperty(); if (isBatch) { lp.setOther(strfmt('Driver={Oracle in OraClient11g_home1};dbq=%1;Uid=%2;Pwd=%3;', stConnect.ServiceId, stConnect.UserName, stConnect.Password)); } else { lp.setOther(strfmt('Driver={Microsoft ODBC for Oracle};Server=%1;Uid=%2;Pwd=%3;', stConnect.ServiceId, stConnect.UserName, stConnect.Password)); } odbc = new OdbcConnection(lp); return odbc ? true : false; } ResultSet executeStatement(str _expr, boolean _update = false) { SqlStatementExecutePermission ssep; Statement stmt; ResultSet res; ; stmt = odbc.createStatement(ResultSetType::ForwardOnly, ResultSetConcurrency::ReadOnly); ssep = new SqlStatementExecutePermission(_expr); ssep.assert(); if (_update) { stmt.executeUpdate(_expr); } else { res = stmt.executeQuery(_expr); } CodeAccessPermission::revertAssert(); return res; }
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|