2009-01-12 12 views

Respuesta

14

AFAIK, las tareas en SSIS fallan en el error. Por lo tanto, si su tarea Ejecutar SQL tiene una definición como tal en él:

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 

Debe obtener los resultados que desea.

+0

También tendría que ajustar correctamente las propiedades del paquete, y posiblemente set 'failparentonerror' – ConcernedOfTunbridgeWells

+1

raiserror ('muy pocas filas en mi_tabla', 16,1) ¡Eso es lo que hace falta! Supongo que no era tanto una pregunta de SSIS y más de una pregunta de SQL. Gracias. –

+0

Tenga en cuenta que el error debe ser un nivel lo suficientemente alto, por ejemplo 'raiserror ('Demas pocas filas en my_table', 1,1)' no funcionaría –

2

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.

2

Se puede crear un mensaje de error personalizado como éste

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 utilizando RAISERROR()

Raiserror (55555,20,-1) WITH LOG 

Es necesario introducir un número mayor que 18 para severidad (aquí 20). Debes tener privilegios de administrador para esto. Y no olvide CON REGISTRO

8

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

1) Añadir la tarea de la escritura

2) Cambie la línea de código generado automáticamente a partir de:

Dts.TaskResult = (int)ScriptResults.Success; 

a

Dts.TaskResult = (int)ScriptResults.Failure; 

y ahí lo tienes!

0
  1. Cree una variable de usuario. Almacene el recuento de registros en esa variable (User :: Rcnt)
  2. Simplemente utilice la tarea Enviar correo y defina el flujo de trabajo.
  3. En limitación precedente (RCNT usuario :: < 20)
Cuestiones relacionadas