RLH*_*RLH 3 sql t-sql ssis bids
我有一个SSIS包,计划每天导出数据.我有几个任务,我只想在本月的第一天执行.重要的是跳过这些任务,并且如果包不是本月的第一个,则包继续执行.
在做了一些搜索之后,我发现了许多引用来解决这个问题,方法是使用以下博客文章中发布的方法:http: //bi-polar23.blogspot.com/2007/05/conditional-task-execution. HTML
但是,我认为有一个更简单的解决方案.为什么我不能只在每月的第一天任务中添加一个表达式来检查当月的日期并相应地在Task上设置"Disabled"属性?
使用表达式和禁用任务似乎比在每个任务之前添加虚拟脚本简单得多.有没有其他人看到或知道我的方法有问题解决这个问题?初步测试似乎有效,但是,我发现SSIS很挑剔.如果它可能在未来引起问题,我宁愿做一些"非常规"的事情.
谢谢你的任何想法.
小智 8
我认为没有任何unconventional关于设置表达式以在条件基础上禁用任务.我在开发的包中做了同样的事情.我宁愿直接在Disable任务上使用Expressions而不是使用来设置条件Script Task.请参阅截图#1.换句话说,我同意你的方法.
这种方法的一个注意事项是,下一个查看包的人可能不知道为什么某个特定任务在给定日期没有执行(在您的情况下,在该月的第一天).为了防止这种情况,您可以添加一个Annotation声明,即该任务Expression的Disable属性上有一个集合.
我建议的另一件事是计算月份值的第一天并将其存储在属性EvaluateAsExpression设置为true的变量中,并在给定任务的表达式中使用此变量来禁用\ enable it.这将阻止计算每个任务表达式中的值.屏幕截图#1显示该Disable属性设置为假定存储在变量中的值IsFirstDayOfMonth.可以将此变量上的表达式设置为计算该月的第一天.
希望有所帮助.
截图#1:
