Ошибка при обновлении таблицы базы данных DB2 в AS/400 с помощью Business Objects Data Integrator 11.7

нам нужно обновить записи в таблице базы данных DB2 в AS/400 с помощью Business Objects Data Integrator 11.7. Версия Data integrator Designer: 11.7.3 Установленные драйверы: iSeries ACCESS ODBC Driver 11.0.2, CLIENT ACCESS ODBC DRIVER 11.0.2

Мы можем выполнить обновление для одной записи, но при массовом обновлении мы получаем следующее сообщение об ошибке. Может ли кто-нибудь помочь в этом.

DBS-070401: ODBC DATA SOURCE <xxxx> Error Message for Operation
<SQLExecute>: <[IBM][iSeries Access ODBC Driver]Driver not capable.>
RUN-051005:
Execution of <Regular Load Operations> for target <XXX_XXXX> failed. Possible causes: (1) Error in the SQL syntax; (2) Database
connection is broken; (3) Database related errors such as transaction log is full, etc.; (4) The user defined in the datastore
has insufficient privileges to execute the SQL. If the error is for preload or postload operation, or if it is for regular load
operation and load triggers are defined, please check the SQL. Otherwise, for (3) and (4), please contact your local DBA.

Если выбранный запрос для задания DI фильтруется только для одной записи, создается приведенный ниже оператор обновления, который выполняется с помощью интегратора данных. В этом случае ошибка драйвера не отображается.

UPDATE TIBCO_STG.PUB_AREA SET ADB_L_DELIVERY = 'C'   WHERE ADB_SEQUENCE = 22849415 

Если запрос на выборку не отфильтрован, ниже четыре SQL-запроса обновления генерируются заданием внедрения зависимостей, в этом пакетном обновлении записей отображается ошибка драйвера.

UPDATE TIBCO_STG.PUB_AREA SET ADB_L_DELIVERY = 'C'   WHERE ADB_SEQUENCE = 22849415 
UPDATE TIBCO_STG.PUB_AREA SET ADB_L_DELIVERY = 'C'   WHERE ADB_SEQUENCE = 22849416 
UPDATE TIBCO_STG.PUB_AREA SET ADB_L_DELIVERY = 'C'   WHERE ADB_SEQUENCE = 22849417 
UPDATE TIBCO_STG.PUB_AREA SET ADB_L_DELIVERY = 'C'   WHERE ADB_SEQUENCE = 22849418

person Ananth    schedule 16.11.2012    source источник
comment
Можете ли вы привести пример оператора, который вы пытаетесь запустить?   -  person David G    schedule 16.11.2012
comment
Вы проверили журнал заданий iSeries на наличие задания SQL?   -  person Jane T    schedule 17.11.2012
comment
@Jane Спасибо. Мы проверили «Журнал ошибок заданий» в консоли управления Data Integrator. Не могли бы вы посоветовать, как проверить журнал заданий на iSeries.   -  person Ananth    schedule 19.11.2012
comment
@ david.Спасибо.Я обновил вопрос примером.   -  person Ananth    schedule 19.11.2012
comment
Ваше массовое обновление выглядит как множество операторов SQL. без точек с запятой, вы пытались переформатировать, чтобы поместить все последовательности в предложение in?   -  person Jane T    schedule 19.11.2012
comment
Можете ли вы рассказать нам больше о логике вашего приложения? Возможно, есть лучший способ приблизиться к тому, чего вы пытаетесь достичь.   -  person WarrenT    schedule 22.11.2012


Ответы (2)


Я не вижу точки с запятой между вашими операторами UPDATE.

Вы также можете рассмотреть другие методы. Например:

UPDATE TIBCO_STG.PUB_AREA 
  SET ADB_L_DELIVERY = 'C' 
  WHERE ADB_SEQUENCE in (22849415, 22849416, 22849417, 22849418)

or

UPDATE TIBCO_STG.PUB_AREA 
  SET ADB_L_DELIVERY = 'C' 
  WHERE ADB_SEQUENCE in (select seq from someFullSelectOrWorkFile)

Если есть какой-то способ закодировать условие WHERE как fullSelect, вы сможете выполнить это в одном операторе SQL. Обработка наборов за раз намного эффективнее, чем обработка строк за раз.

person WarrenT    schedule 19.11.2012
comment
@ Уоррен..Спасибо. Да. Вы правы, что в операторе обновления нет точек с запятой. Эти sql записываются в файл (переполнение), установленный заданием DI во время выполнения задания. эти sql не имеют точки с запятой по умолчанию, мы используем этот параметр файла переполнения, чтобы проверить правильность sql, сгенерированного заданием DI. Поскольку мы получаем ошибку драйвера, есть ли какая-либо несовместимость используемых драйверов ODBC (драйвер iSeries ACCESS ODBC 11.0.2, CLIENT ACCESS ODBC DRIVER 11.0.2) для версии DI (Business Objects Data Integrator 11.7. Версия конструктора интегратора данных 11.7.3) - person Ananth; 20.11.2012
comment
@ДжейнТ. Спасибо, Джейн, записи будут последовательно считываться из источника и обновлять цель как несколько запросов sql. - person Ananth; 22.11.2012

Ваш драйвер будет частью IBM i Access для Windows. Чтобы убедиться, что у вас установлена ​​последняя версия, откройте System i Navigator и посмотрите в разделе «Справка/О программе». Отображаемая там версия должна быть не ниже версии ОС IBM i на вашем сервере. Более поздняя версия драйвера IBM i Access должна поддерживать как минимум 2 предыдущих выпуска серверной ОС. См. эту страницу совместимости, если вам нужно подробнее.

В настоящее время самым последним выпуском является 7.1 как для IBM i, так и для IBM Access для Windows.

Далее всегда проверяйте наличие последнего пакета обновлений< /а> установлен.

person WarrenT    schedule 20.11.2012