0

给出这个计划批处理运行的 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 秒的数字,所以我不能说

我无法重现这一点,因为我不知道原因。有没有其他人经历过这个或有办法解决这个问题?任何建议如何找到原因?是 unix 还是 Sybase isql?

4

1 回答 1

0

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

rm -f $TEMP_DIR/*

如果这个长期运行的报告与上面一行的计划脚本之一重叠,则 .tmp_1 可能会被删除,因此在邮寄时为空白。我通过手动删除 .tmp_1 来复制这一点,而报告仍在其中写入 sql。

于 2012-02-14T01:29:04.070 回答