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!
- Crea una variable de usuario Almacene el recuento de registros en esa variable (User :: Rcnt)
- Simplemente use la tarea de enviar correo y defina el flujo de trabajo.
- En restricción previa (Usuario :: Rcnt <20)