导入由DB2AUDIT delasc extract命令生成的定界ascii文件时,SQL3125W或SQL3117W错误
故障排除
问题
导入由DB2AUDIT delasc extract命令生成的定界ascii文件时,SQL3125W或SQL3117W错误
症状
将IMPORT或LOAD命令与由DB2AUDIT extract命令生成的定界ascii文件一起使用会失败,并显示类似以下错误:
SQL3125W由于行“ 2”和列“ 2”中的字符数据
长于目标数据库列,因此该字符数据被截断了。
SQL3117W无法将行“ 2”和列“ 10”中的字段值转换为
SMALLINT值。空值已加载。
导入任何提取文件时,可能会发生以下错误:
- 审计模型
- 检查模型
- 对象模型
- SECMAINT.DEL
- SYSADMIN.DEL
- 验证码
- 语境模型
原因
这些IMPORT / LOAD错误的原因在于导入的数据。引起问题的列将是本地事务ID或全局事务ID。这两列包含FOR BIT DATA,值可以包含0x'0A'。这是“换行符”,并且IMPORT或LOAD命令会将其解释为当前记录的结尾。这意味着将要导入的单行数据将被视为两行。尝试导入第二行将生成错误消息。
所有定界的审计摘录文件都包含这两列。
诊断问题
在文本编辑器(例如EXECUTE.DEL)中打开定界的ascii文件将显示记录分为两行。
解决问题
通过将MODIFIED BY DELPRIORITYCHAR参数添加到IMPORT或LOAD语句,可以解决此问题。例如:
- 从db2audit的DEL LOBS的execute.del导入,由CHARDEL ~~修改,DELPRIORITYCHAR插入到audit_data中