如何在给定日期与For Loop Container中的当前日期匹配之前重试?

时间:2013-02-07 15:26:49

标签: ssis

情境:

我有一个查找表,其中有一个日期列,我需要查看这个日期列并检查它是否是今天的日期,如果没有则等待5分钟并再次检查相同的事情,如果日期是当前发送一封电子邮件并退出循环,如果6次重试,如果日期不是当前执行SQL任务。

我有一个ForLoop容器,其中包含以下设置:

InitExpression : @[User::Counter] = 0
EvalExpression : @[User::Counter] < 6
AssignExpression : @[User::Counter] = @[User::Counter] + 1

如何/在哪里查看日期:

SELECT ControlTimeStamp from LOOKUPTABLE
 WHERE ControlTimeStamp = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

注意:

我正在使用Business Intelligence Development Studio(BIDS)2008进行SSIS包开发。

1 个答案:

答案 0 :(得分:1)

我想你会想要这样的方法。执行SQL任务以确定今天是否是您的日期。从那里你需要睡N分钟或者你想要发送电子邮件。诀窍是在子节点的执行SQL任务之间的Expression上使用Precedence Constraint

我的实现与您的实现略有不同,但概念保持不变。我创建了两个变量,@ ActualDate和@ReferenceDate。 @ActualDate是今天,@ ReferenceDate是从Execute SQL Task设置的。然后我看看它们是否相同。对于你所拥有的,如果你得到了一个结果,那么你知道已经满足了发送邮件的条件,所以改变你的表达式来满足这一要求。

enter image description here

未显示的是如何尽早终止循环,因为我不太清楚如何做到这一点。