【问题标题】:Is it wise to disable a Task by using an expression evaluation?使用表达式评估禁用任务是否明智?
【发布时间】:2011-06-01 19:05:11
【问题描述】:

我有一个计划每天导出数据的 SSIS 包。我有一些任务只想在每月的第一天执行。重要的是跳过这些任务,如果不是第一天,包继续执行。

经过一番搜索,我找到了许多解决此问题的参考资料,使用以下博客文章中发布的方法: http://bi-polar23.blogspot.com/2007/05/conditional-task-execution.html

不过,我认为有一个更简单的解决方案。为什么我不能在每个月的第一天任务中添加一个表达式来检查当月的日期并相应地设置任务的“已禁用”属性?

使用表达式和禁用任务似乎比在每个任务之前添加一个虚拟脚本要简单得多。其他人是否看到或知道我解决此问题的方法存在问题?初步测试似乎有效,但是,我发现 SSIS 很挑剔。如果它可能在未来引起问题,我宁愿不做“非常规”的事情。

感谢您的任何想法。

【问题讨论】:

    标签: sql tsql ssis bids


    【解决方案1】:

    我认为unconventional 没有任何关于设置表达式以根据条件禁用任务的内容。我在我开发的包中做了同样的事情。我宁愿使用Expressions 直接在任务的Disable 属性上设置条件,而不是使用Script Task。请参阅屏幕截图 #1。换句话说,我同意你的做法。

    使用这种方法的一个注意事项是,下一个查看包的人可能不知道为什么特定任务没有在给定日期(在您的情况下是一个月的第一天)执行。为了防止这种情况,您可以添加一个Annotation,说明在任务的Disable 属性上设置了一个Expression

    我建议的另一件事是计算当月的第一天的值并将其存储在属性EvaluateAsExpression 设置为 true 的变量中,并在表达式中使用此变量一个给定的任务来禁用\启用它。这将阻止计算每个任务表达式中的值。屏幕截图 #1 显示 Disable 属性设置为假定存储在变量 IsFirstDayOfMonth 中的值。可以设置这个变量上的表达式来计算当月的第一天。

    希望对您有所帮助。

    屏幕截图 #1:

    【讨论】:

    • 太棒了!你的回答正是我打算做的。我没有添加有关设置表达式变量的内容,因为我试图使帖子保持简单。 (简洁不是我的强项。)向你致敬。我已将您的回复设为答案。
    • "使用这种方法的一个注意事项是,下一个查看包的人可能不知道为什么特定任务没有在给定日期执行(在你的情况下是月)” - 这是我今天早上困惑的确切原因(终于从这篇文章中弄清楚了)。
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2010-11-12
    相关资源
    最近更新 更多