AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.10.2015, 18:40   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
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  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Нужно установить клиента Oracle DB, также есть возможность его не ставить, а просто распаковать - см. Instant Client. Примеры строк подключения можно найти тут: http://www.connectionstrings.com/oracle/

Последний раз редактировалось gl00mie; 02.10.2015 в 18:46.
Старый 05.10.2015, 12:37   #3  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Установила, но ошибка все равно сохранилась. Что - то надо в самой аксапте настраивать?
Старый 06.10.2015, 19:49   #4  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Теперь возникла проблема с кодировкой.
Исходно она 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  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Решение для Win7
На компьютере, где будет выполняться соединение и, соответственно, установлен клиент Oracle, необходимо
Мой компьютер - Правая кнопка мыши Свойства - подраздел Advanced system settings - tab Advanced - Environment Variables - в Переменные среды пользователя добавить
Имя переменной - NLS_LANG
Значение переменной - RUSSIAN_RUSSIA.CL8MSWIN1251
Далее перезагрузить компьютер.
Старый 12.10.2015, 17:45   #6  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Вытащил код который я писал еще под 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. Ну а программистов будить нельзя вообще.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009 + Oracle + Bug? ZVV DAX: Администрирование 8 24.06.2013 16:41
Скрипт для переноса данных Ax3.0 (Oracle) - Ax2009 (MSSQL) someOne DAX: Программирование 2 14.06.2011 14:53
Миграция AX3(Oracle) -> AX2009(MSSQL) Shamil DAX: Администрирование 16 11.01.2010 18:36
Подключение к внешней базе ORACLE greench DAX: Программирование 2 26.08.2009 16:54
Подключение к базе на Oracle через ADO miklenew DAX: Программирование 6 19.12.2007 15:41

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:10.