我尝试将完整性设置为大约1000个表,这些表由于挂起状态而出错。由于表太多,我无法逐个进行。子查询返回所有表的名称。以下是我使用的查询,但它现在不起作用:
SET INTEGRITY FOR TABSCHEMA.TABNAME IMMEDIATE CHECKED IN
( SELECT TABNAME
FROM SYSCAT.TABLES
WHERE ( CONST_CHECKED LIKE '%N%' AND TABSCHEMA = 'FINANCE')
WITH ur
)
你知道吗?
1条答案
按热度按时间ruarlubt1#
这样一个庞大的
SET INTEGRITY
的主要问题是,如果您有一个处于check-pending状态的父子对,您必须将这两个表都包含在一个SET INTEGRITY
命令中,或者先在父表上运行它,然后再用后续命令在子表上运行它。如果您只在子表上运行SET INTEGRITY
,则会得到一个错误。如果相应的父表处于检查挂起状态,则将该父表从表中删除。要将所有处于check pending状态的表拆分为不同的非相关组,以便在每个这样的表组上运行一个
SET INTEGRITY
,这是一项非常重要的任务。这就是为什么最好运行如下脚本:
顺序表是迭代处理的。每次迭代处理一个表,如果它没有父表在检查挂起的时刻。
MQT随后进行处理。
如果
SET INTEGRITY
在会话表上失败,则将表名插入会话表中。