У меня есть компонент сценария, который принимает записи из таблицы базы данных SQL Azure. Затем скрипт вызывает веб-сервис, который возвращает количество неудачных и успешных записей.
Для всех записей я хотел бы добавить поле Status, которое имеет либо «success», либо «fail», и это получает выходные данные из компонента скрипта.
Затем я записываю эти выходные данные в текстовый файл.
Проблема: я не смог добавить статус для каждой входной записи, так как вызов веб-службы происходит только после выполнения.
Я попробовал это, но все еще не работает:
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
listOfData.Add(new ClockData
{
TimeClockID=Row.TimeClockID,
PersonID=Row.EmployeeCode,
LocationCode=Row.ClockInServiceContextID,
ClockInDateTime=Row.ClockInDateTime,
ClockOutDateTime=Row.ClockOutDateTime
});
}
public override void CreateNewOutputRows()
{
MessageBox.Show("Test CreateNewOutputRows");
MessageBox.Show(listOfData.Count.ToString());
foreach (var item in listOfData)
{
Output0Buffer.AddRow();
Output0Buffer.EmployeeCode = item.PersonID;
MessageBox.Show(item.PersonID);
}
}
sql-server
ssis
flybyte
источник
источник
Ответы:
Все в преобразовании делается внутри Input0_ProcessInputRow. Решение по существу будет
Вы можете выполнить шаги вывода в PostExecute, CreateNewOutputRows не запускается в Transformation, только в сценариях назначения.
источник
Я не очень опытный в SSIS, но я думаю, что вы могли бы попробовать следующие идеи:
Тогда у вас будет пустой столбец для вывода, и вам нужно будет заполнить его некоторыми данными для каждой из входных строк:
Это поможет вам добавить столбец Status в вашу выходную таблицу. Надеюсь, это то, что вы хотели.
источник