Последовательность сброса DB2 полночь каждый день - PullRequest
0 голосов
/ 14 апреля 2020

Мне нужно автоматически переустанавливать последовательность DB2 каждую полночь. Я пытался выполнить задачи администратора с примером, который я нашел в Примере 1 (https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0054371.html). Даже когда это было выполнено и показано в systools.admin_task_list, Это не сбрасывало последовательность в полночь. Нет элементов в systools.admin_task_status. Как я могу получить ошибки, связанные с задачами администратора?

Есть ли более простой способ ежедневно сбрасывать последовательность DB2?

CALL SYSPROC.ADMIN_TASK_ADD
  ('Reset_sales1_seq',
    CURRENT_TIMESTAMP,
    NULL,
    NULL,
    '0 0 * * *',
    'SYSPROC',
    'ADMIN_CMD',
    'VALUES("ALTER SEQUENCE Sample.sales1_seq RESTART WITH 1")',
    NULL,
    NULL )

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

Вы используете хранимую процедуру ADMIN_CMD, которая выполняет только определенный c выбор команд , как описано в документации .

Знайте разницу между простым SQL / DDL и командами.

ADMIN_CMD не для выполнения простых операторов SQL, таких как ALTER SEQUENCE.

Попробуйте написать простую хранимую процедуру для выполнения ALTER SEQUENCE action in dynamic SQL, and then calling that procedure directly in the ADMIN_TASK_ADD`.

1 голос
/ 15 апреля 2020

Попробуйте

CREATE PROCEDURE MYSCHEMA.RESET_SEQUENCE()
BEGIN
    EXECUTE IMMEDIATE('ALTER SEQUENCE SAMPLE.SALES1_SEQ RESTART WITH 1');
END

, затем

CALL SYSPROC.ADMIN_TASK_ADD
('Reset_sales1_seq',
CURRENT_TIMESTAMP,
NULL,
NULL,
'0 0 * * *',
'MYSCHEMA',
'RESET_SEQUENCE',
NULL,
NULL,
NULL )
...