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