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()))

ノート:

SSIS パッケージの開発に Business Intelligence Development Studio (BIDS) 2008 を使用しています。

4

1 に答える 1

1

このようなアプローチが必要になると思います。SQL タスクを実行して、今日が日付かどうかを判断します。そこから、N 分間スリープするか、メールを送信する必要があります。トリックは、SQL 実行タスクと子Expressionの間で を使用することです。Precedence Constraint

私の実装はあなたの実装とは少し異なりますが、コンセプトは同じままです。@ActualDate と @ReferenceDate という 2 つの変数を作成しました。@ActualDate は今日で、@ReferenceDate は SQL 実行タスクから設定されます。次に、それらが同等かどうかを確認します。あなたが持っているものについては、結果が得られれば、メール送信条件が満たされていることがわかりますので、それを満たすように式を変更してください。

ここに画像の説明を入力

表示されていないのは、ループを早期に終了する方法です。その方法がよくわからないためです。

于 2013-02-07T16:47:51.933 に答える