SSIS devuelve el recuento total de filas comprometidas en la tarea Execute SQL.
Tengo una tarea SQL Ejecutada con una consulta SQL para eliminar los datos de una tabla. Estoy utilizando un bucle while para eliminar los datos por lotes y try/catch para manejar posibles fallos.
En la tarea Execute SQL Task quiero devolver el registro eliminado, por lo que he agregado parámetros de salida que capturan el registro eliminado. Pero el problema que tengo es que no puedo capturar/devolver el registro eliminado (que ya está confirmado) en caso de fallo.
Estoy usando la lógica SQL siguiente:
Declare @DeletedRows INT = 0
BEGIN TRY
BEGIN TRANSACTION
While (@deletedrows < @rowstodelete)
BEGIN
Eliminar registros donde la condición sea igual
SET @deletedrows = @deletedrows + @@rowcount
END
COMMIT TRANSACTION
SET ? = @deletedrows —- devolviendo registros eliminados al parámetro de salida de la tarea de SQL ejecución
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
RAISERROR (CAPTURAR ERRORES);
END CATCH
¿Alguna idea de cómo puedo devolver los registros eliminados o confirmados al parámetro de salida de Execute SQL Task?
davy.ai
Solución
Puede utilizar la cláusula
OUTPUT
en su sentenciaDELETE
para devolver los registros eliminados. La cláusulaOUTPUT
devolverá los registros eliminados antes de que se confirme la transacción.Por ejemplo:
Luego puede utilizar
#tempTable
para devolver los registros eliminados al parámetro de salida de la tareaExecute SQL Task
.