0

设想:

我有一个包含日期列的查找表,我需要查看此日期列并检查它是否是今天的日期,如果不是,则等待 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 包开发。

4

1 回答 1

1

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

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

在此处输入图像描述

没有显示的是如何尽早终止循环,因为我不太确定如何做到这一点。

于 2013-02-07T16:47:51.933 回答