Tengo un componente de script que acepta registros de la tabla de base de datos SQL Azure. El script luego invoca un servicio web, que devuelve el número de registros fallidos y exitosos.
Para todos los registros, me gustaría agregar el campo Estado que tiene "éxito" o "error" y esto se obtiene del componente de script.
Luego registro esos resultados en un archivo de texto.
Problema: no he podido agregar el estado de cada registro de entrada ya que la llamada al servicio web solo ocurre en la ejecución posterior.
Intenté esto pero aún no 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
fuente
fuente
Respuestas:
Todo en una transformación se realiza dentro de Input0_ProcessInputRow La solución sería esencialmente
Es posible que pueda realizar los pasos de salida en PostExecute, CreateNewOutputRows no se ejecuta en Transformación, solo en secuencias de comandos de destino.
fuente
No soy muy competente en SSIS, pero creo que podrías probar las siguientes ideas:
Luego, tendrá la columna vacía en su salida y deberá completarla con algunos datos para cada una de las filas de entrada:
Esto lo ayudará a agregar una columna de Estado a su tabla de salida. Espero que esto sea lo que querías.
fuente