我想开发SSIS包,我想从FTP位置复制文件。此位置可配置。我希望如果FTP位置由于任何原因而无法使用,那么它将能够从某个备用FTP位置获取文件。请告诉我如何实现这一目标。
答案 0 :(得分:2)
添加FTP任务,主FTP,然后添加第二个FTP,Alt FTP。通过OnFailure约束将第二个连接到第一个。
创建一个整数SSIS变量,FTPTryCount
将其赋值为零。
使用EvaluateAsExpression = true添加字符串变量FTPConnectionString
并使用类似
(@[User::FTPTryCount] ==0)?"PrimaryFTPString":"AlternateFTPString"
如果FTPTryCount的值为零,那么我们将使用第一个连接字符串。否则,我们使用第二个字符串。为您的系统创建值连接字符串。
配置FTP连接管理器以使用@[User::FTPConnectionString]
添加一个布尔变量FileFound
并将其设置为false。
添加For循环。终端条件为@[User::FTPTryCount] > 1 || @[User::FileFound]
如果我们找到该文件或尝试了两次,我们想要退出循环。
在FTP循环中,您将拥有FTP任务和脚本任务。脚本任务将位于OnSuccess路径中,它所做的就是将FileFound设置为true。
假设存在Loop方法的变量,添加一个脚本任务,将@[User::FTPTryCount]
设置为检查FTP连接管理器的连接字符串,然后尝试打开与它的连接。将它全部包装在try / catch块中。如果连接打开,则FTPTryCount保持为0.如果catch块触发,则将其设置为1.
从“脚本任务”中,添加您的FTP任务。配置FTP连接管理器以使用@[User::FTPConnectionString]
如果FTP任务无法连接到远程服务器(或者没有找到文件),则FTP任务将失败。你需要处理这个问题,否则它就没有用了。
这是高级别的,我无法访问FTP站点,因此您可以自行设计物理实现,但上述任何一种都可以正常工作。