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 が削除される可能性があるため、メールが送信されるまでに空白になります。レポートがまだそこにSQLを書き込んでいる間に.tmp_1を手動で削除することでこれを複製しました。

于 2012-02-14T01:29:04.070 に答える