Eu tenho um componente de script que aceita registros da tabela de banco de dados do SQL Azure. O script então chama um serviço da web, que retorna o número de registros com falha e êxito.
Para todos os registros, eu gostaria de adicionar o campo Status que tem "sucesso" ou "falha" e isso obtém saída do componente de script.
Em seguida, registro essas saídas em um arquivo de texto.
Problema: Não consigo adicionar status para cada registro de entrada, pois a chamada de serviço da Web ocorre apenas após a execução.
Eu tentei isso, mas ainda não funciona:
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
fonte
fonte
Respostas:
Tudo em uma transformação é feito no Input0_ProcessInputRow. A solução seria essencialmente
Você pode executar as etapas de saída no PostExecute, CreateNewOutputRows não é executado na transformação, apenas nos scripts de destino.
fonte
Não sou muito proficiente no SSIS, mas acho que você pode tentar as seguintes idéias:
Em seguida, você terá a coluna vazia na sua saída e precisará preenchê-la com alguns dados para cada uma das linhas de entrada:
Isso ajudará você a adicionar uma coluna Status à sua tabela de saída. Espero que seja isso que você queria.
fonte