我有一个SSIS包,该包通过执行进程任务执行WinSCP.exe,并将文件集下载到某个公用文件夹位置。
文件名是:
Text1.csv
Test2.csv
以此类推。
此后,我运行另一组执行过程任务,这些任务将使用C:\Windows\System32\cmd.exe
来开始将下载的文件复制到不同的位置。
下面是我的命令行参数,用于首先在某个公共位置下载文件:
/log=G:\USER_DATA\USER_USER_SYNC\SFTP_LOG\user_sync_winscp.log /command "open sftp://bisftp:*UFVy2u6jnJ]#hU0Zer5AjvDU4#K3m@stransfer.host.com/ -hostkey=""ssh-rsa 2048 9b:63:5e:c4:26:bb:35:0d:49:e6:74:5e:5a:48:c0:8a""" "cd /DATA" "get -filemask=">=today" Test1.csv Test2.csv G:\USER_DATA\USER_USER_SYNC\Download\" "exit"
下面是将文件复制到不同位置的命令行参数:
/C copy /b G:\USER_DATA\USER_USER_SYNC\Download\Test1.csv G:\USER_DATA\USER_USER_SYNC\Testing1
/C copy /b G:\USER_DATA\USER_USER_SYNC\Download\Test1.csv G:\USER_DATA\USER_USER_SYNC\Testing2
我在这里有几个问题。
由于我使用文件掩码仅下载最新的更新文件。 如果第一个执行过程任务成功运行,则它将退出代码设置为“ 0”,然后执行下一个执行过程任务以将文件复制到其他位置。 一切正常,直到最后。
但是,在某些情况下,首次执行任务无法将文件下载到公共文件夹位置。 失败的原因可能是另一方没有将最新文件放在SFTP服务器上,并且由于日期不匹配而导致无法首先下载文件,或者也可能是其他网络问题。
因此,由于下一次执行后续执行流程任务时,它会抛出类似"The process exit code was "1" while the expected was "0"."
的异常,并且由于没有任何可复制或移动的内容而失败。
我们可以捕获返回到某个变量的退出代码,以便可以在某个表达式中进一步使用它来决定是否执行其他任务吗?
我还使用其他执行过程任务来复制文件。我们可以将单独的复制步骤组合为一个,并使用一个执行流程任务吗?