Sql 使用表达式计算禁用任务是否明智?

Sql 使用表达式计算禁用任务是否明智?,sql,tsql,ssis,bids,Sql,Tsql,Ssis,Bids,我有一个SSIS包,计划每天导出数据。我有一些任务只想在每月的第一天执行。跳过这些任务很重要,如果不是本月的第一个任务,包将继续执行 在进行了一些搜索之后,我找到了许多参考资料,通过使用以下博文中发布的方法来解决此问题: 然而,我认为有一个更简单的解决办法。为什么我不能在每个月的第一天任务中添加一个表达式来检查月的第几天,并相应地设置任务的“Disabled”属性 使用表达式和禁用任务似乎比在每个任务之前添加虚拟脚本简单得多。其他人是否看到或知道我解决此问题的方法存在问题?初步测试似乎有效,但

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

在进行了一些搜索之后,我找到了许多参考资料,通过使用以下博文中发布的方法来解决此问题:

然而,我认为有一个更简单的解决办法。为什么我不能在每个月的第一天任务中添加一个表达式来检查月的第几天,并相应地设置任务的“Disabled”属性

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


谢谢你的建议。

我认为设置表达式以有条件地禁用任务没有任何不合常规的方法。我在我开发的软件包中做了同样的事情。我更愿意使用
表达式直接在任务的
Disable
属性上设置条件,而不是使用
脚本任务
。请参阅屏幕截图#1。换句话说,我同意你的方法


这种方法需要注意的一点是,下一个查看包的人可能不知道为什么某个特定任务没有在给定的日期执行(在您的情况下是每月的第一天)。为了防止出现这种情况,可以添加一个
注释
,说明在任务的
禁用
属性上设置了一个
表达式

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

希望有帮助

屏幕截图#1:


好极了!你的回答正是我打算做的。我没有添加关于设置表达式变量的内容,因为我试图使post保持简单。(简洁不是我的强项。)谢谢你。我把你的回答作为答案。“这种方法需要注意的是,下一个查看包的人可能不知道为什么某个特定任务没有在给定的日期执行(在你的例子中是月的第一天)”-这就是我今天早上困惑的确切原因(最终从这篇文章中找到了答案)。