ASE ISQL输出到文件,偶尔为空或空白

时间:2012-02-13 08:22:01

标签: sql unix scheduled-tasks sybase-ase isql

给出这个unix脚本,这是预定的批量运行:

isql -U$USR -S$SRVR -P$PWD -w2000 < $SCRIPTS/sample_report.sql > $TEMP_DIR/sample_report.tmp_1
sed 's/-\{3,\}//g' $TEMP_DIR/sample_report.tmp_1 > $TEMP_DIR/sample_report.htm_1
uuencode $TEMP_DIR/sample_report.htm_1 sample_report.xls > $TEMP_DIR/sample_report.mail_1

mailx -s "Daily Sample Report" email@example.com < $TEMP_DIR/sample_report.mail_1

有时会在邮件中附加sample_report.xls,为空,零行。

我排除了以下内容:

  1. 没有命令处理超时 - 通过将-t30添加到isql,我得到xls并且它包含错误,而不是空
  2. 不是sql错误 - 通过强制sql中的错误,我得到xls并且它包含错误,而不是空
  3. 不确定登录超时 - 通过添加-l1,它不会超时,但我不能指定低于1秒的数字,所以我不能说
  4. 我无法重现这一点,因为我不知道原因。有没有其他人经历过这个或有办法解决这个问题?有什么建议如何找到原因?是unix还是Sybase isql?

1 个答案:

答案 0 :(得分:0)

我找到了原因。由于这是预定的,因此该特定报告需要很长时间才能生成。其他预定的脚本,我发现有这行代码:

rm -f $TEMP_DIR/*

如果这个长时间运行的报告与上面一行的一个预定脚本重叠,则可能会删除.tmp_1,因此在邮寄时它是空白的。我通过在报告仍然在那里写sql时手动删除.tmp_1来复制它。