Scenario:
I have a lookup table which has a date column, I need to look at this date column and check if its today’s date, if not then wait for 5 mins and check the same thing again, and if the date is current send an email and exit the loop, and if after 6 retries if the date is not current execute a SQL task.
I have a ForLoop Container with the following settings:
InitExpression : @[User::Counter] = 0
EvalExpression : @[User::Counter] < 6
AssignExpression : @[User::Counter] = @[User::Counter] + 1
How / Where do I check the date :
SELECT ControlTimeStamp from LOOKUPTABLE
WHERE ControlTimeStamp = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Note:
I’m using Business Intelligence Development Studio (BIDS) 2008 for SSIS package development.
I think you’ll want an approach like this. Execute your SQL Task to determine whether today is your date. From there you’ll need to either sleep for N minutes or you’ll want to send an email. The trick is to use an
Expressionon thePrecedence Constraintbetween the Execute SQL Task the children.My implementation differs slightly from what yours but the concept remains the same. I created two variables, @ActualDate and @ReferenceDate. @ActualDate is today and @ReferenceDate gets set from the Execute SQL Task. I then see whether they are equivalent. For what you have, if you get a result, then you know the send mail condition has been met so change your Expressions to meet that.
What isn’t shown is how to terminate the loop early as I’m not quite certain how to do that.