备用FTP源根据可用性

时间:2015-05-07 13:06:04

标签: ssis

我想开发SSIS包,我想从FTP位置复制文件。此位置可配置。我希望如果FTP位置由于任何原因而无法使用,那么它将能够从某个备用FTP位置获取文件。请告诉我如何实现这一目标。

1 个答案:

答案 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站点,因此您可以自行设计物理实现,但上述任何一种都可以正常工作。