SSIS FOR Loop входит в бесконечный цикл

Я полагаю, что я установил правильные выражения, но это продолжает идти в бесконечный цикл. Вот подробности:

Variables:
@CD Datetime = @[User::ED]
@ED datetime = 3/31/2014
@M12 Datetime = DATEADD("d", 1, DATEADD("m", -12, @[User::ED] ))

For-Loop:
InitExpression: @CD = @ED
EvalExpression: @CD > @M12
AssignExpression: @CD = DATEADD("m", -1, @CD)

В цикле For находится задача Execute SQL, которая вставляет значение @CD для этой итерации в таблицу. Выражение присваивания почему-то не работает, и, следовательно, условие EvalExpression никогда не выполняется. Что мне не хватает?

Я использую SQL Server 2012. Спасибо.

1 ответ

Решение

Переменная @[User::CD] имеет выражение, которому присваивается значение @ [User:: ED]. Затем вы пытаетесь изменить значение @[User::CD] в контексте цикла for. Это не приводит к ошибке, как попытка изменить итератор вне конструкции for, как это было бы в языках на основе Си, но логически это неправильно.

Предположим, SSIS изменяет значение, уменьшая его на 1. В следующий раз, когда ему нужно будет ссылаться на @[User::CD], он будет использовать выражение, которое говорит, что мое значение действительно @ [User:: ED], которое никогда не меняется.

Разрешение - удалите выражение из переменной @[User::CD].

Другие вопросы по тегам