(1) Подсчет итераций с использованием задачи выражения
Задача, доступная в SSIS 2012 +
В контейнере цикла по каждому элементу нет свойств, содержащихномер итерации .Вы можете достичь этого, создав переменную SSIS типа Int с начальным значением, равным 0
.пример @[User::Counter]
Внутри контейнера цикла Foreach добавьте Expression Task
со следующим выражением:
@[User::Counter] = @[User::Counter] + 1
Полезные ссылки
(2) Подсчет итераций с помощью задачи сценария
Youможно выполнить тот же процесс с помощью задачи «Сценарий», создав переменную счетчика, выделив ее как переменную ReadWrite в задаче «Сценарий», и внутри сценария добавьте аналогичную строку в основную функцию:
Dts.Variables["User::Counter"].Value = Convert.ToInt32(Dts.Variables["User::Counter"].Value) + 1;
Ссылки
Отображение данных
Существуют различные способы отображения данных.Одним из них является использование сценария задачи.Укажите, что ваша переменная @[User::Counter]
находится в коллекции ReadOnly, а затем отправьте значение в журнал выполнения.
public void Main()
{
bool fireAgain = false;
string message = "{0}::{1} : {2}";
foreach (var item in Dts.Variables)
{
Dts.Events.FireInformation(0, "SCR Echo Back", string.Format(message, item.Namespace, item.Name, item.Value), string.Empty, 0, ref fireAgain);
}
Dts.TaskResult = (int)ScriptResults.Success;
}
. Другой подход заключается в установке свойства Name
Задачи в цикле Foreach черезвыражение.Щелкните правой кнопкой мыши на Задаче в Цикле и выберите Свойства.Найдите коллекцию [+]Expressions
в разделе «Свойства» и щелкните правой кнопкой мыши по эллипсам ...
, а в новом окне выберите «Имя» с левой стороны и задайте для выражения правой стороны значение
"My Task " + RIGHT("000" + (DT_WSTR,3) @[User::Counter], 3)
* 1061.* Это объединяет две строки "My Task" и преобразует переменную Counter в строку, а слева добавляет ее к нулям, так что это всегда трехзначное число