我有一个查找表,其中有一个日期列,我需要查看这个日期列并检查它是否是今天的日期,如果没有则等待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包开发。
答案 0 :(得分:1)
我想你会想要这样的方法。执行SQL任务以确定今天是否是您的日期。从那里你需要睡N分钟或者你想要发送电子邮件。诀窍是在子节点的执行SQL任务之间的Expression
上使用Precedence Constraint
。
我的实现与您的实现略有不同,但概念保持不变。我创建了两个变量,@ ActualDate和@ReferenceDate。 @ActualDate是今天,@ ReferenceDate是从Execute SQL Task设置的。然后我看看它们是否相同。对于你所拥有的,如果你得到了一个结果,那么你知道已经满足了发送邮件的条件,所以改变你的表达式来满足这一要求。
未显示的是如何尽早终止循环,因为我不太清楚如何做到这一点。