visual studio stored services paquetes paquete ejecutar dtsx desde como ssis

ssis - studio - ¿Cómo puedo fallar manualmente un paquete en Integration Services?



paquetes en sql server (5)

AFAIK, las tareas en SSIS fallan por error. Entonces, si su tarea Ejecutar SQL tiene una declaración como tal en ella:

declare @count int select @count = select count(*) from my_table if @count < 1000 begin raiserror(''Too few rows in my_table'',16,1) end else begin -- Process your table here end

Deberías obtener los resultados que deseas.

Estoy ejecutando una declaración de tarea SQL de ejecución en mi paquete de SSIS. La tarea Ejecutar SQL ejecuta SQL y verifica que las tablas tengan más de 1000 filas. Si tienen menos de 1000 filas, quiero fallar el paquete.

¿Cómo fuerzo un error dentro de una declaración SQL?


Debe realizar la propiedad FailPackageOnFailure true..try para recuperar la propiedad FailPackageOnFailure de la tarea en particular y asignar el valor verdadero. para que el paquete falle.


Puede crear un mensaje de error personalizado como este

EXEC sp_ADDMESSAGE @msgnum=55555, @severity=1, @msgtext=''Threshold condition failed. The package execution has been terminated.''

A continuación, puede llamar a este error con Raiserror ()

Raiserror (55555,20,-1) WITH LOG

Necesita ingresar un número mayor a 18 para la severidad (aquí 20). Debes tener privilegios de administrador para esto. Y no te olvides CON LOG


Me gusta forzar una falla mediante el uso de una tarea de script. Es realmente fácil.

1) Agregue la tarea de script

2) Cambiar la línea de código generado automáticamente desde:

Dts.TaskResult = (int)ScriptResults.Success;

a

Dts.TaskResult = (int)ScriptResults.Failure;

y ahí tienes!


  1. Crea una variable de usuario Almacene el recuento de registros en esa variable (User :: Rcnt)
  2. Simplemente use la tarea de enviar correo y defina el flujo de trabajo.
  3. En restricción previa (Usuario :: Rcnt <20)