檢測FTP超時我有安排每天運行一個SQL Server代理作業。兩個步驟中的第一步調用一個SSIS包,它將查詢的結果寫入文件。第二步執行其重命名文件,包括日期批處理文件,將文件上傳到合作伙伴的FTP站點,將文件移動到歸檔目錄和清理。這通常工作正常。在Windows批處理腳本
然而,有時候,沒有通知發送作業成功完成。當我登錄到服務器時,發現ftp.exe仍在運行,但該文件尚未上傳,也未移至存檔。當我終止FTP進程時,作業繼續,移動文件並清理。看看工作經歷揭示了這些失敗案例中的兩種不同情況。首先,在建立連接,但看到最後一個FTP輸出爲150 Opening data channel for file transfer.
零錢,沒有226 Transfer OK
因爲有一個成功的作業運行。第二種情況是連接永遠不會建立,所以腳本會關閉,並在沒有連接打開時嘗試登錄。
這裏是主機,用戶腳本,並通過被改寫的:
@echo off
setlocal
D:
cd D:\Backups
set file_name=ssis_output.txt
set new_file_name=SDCL.%date:~-4,4%-%date:~-10,2%-%date:~-7,2%-00-00-00.txt
set user=XXXXXXXXXXXXX
set pass=XXXXXXXXXXXXX
set host=XXXXXXXXXXXXX
ren "%file_name%" "%new_file_name%"
echo user %user%> ftpcmd.dat
echo %pass%>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo put %new_file_name%>> ftpcmd.dat
echo close>> ftpcmd.dat
echo bye>> ftpcmd.dat
ftp -n -s:ftpcmd.dat %host%
del ftpcmd.dat
move %new_file_name% data_files
我想什麼做的是找到一種方法,包括在批處理文件中的一些錯誤檢測,因此如果FTP連接要麼在傳輸完成之前未建立或超時,腳本會識別並失敗,從而允許作業失敗併發送相應的通知。更好的是,連接失敗會導致在適當的停頓之後再次嘗試幾次,然後才放棄並報告失敗。
編輯:我不反對安裝一個不同的免費軟件FTP客戶端,如WinSCP,如果這將有助於達成解決方案。