Te sugerimos que pruebes esta solución en un entorno controlado antes de pasarlo a producción, un saludo.
Solución:
Puede crear un proceso almacenado para los pasos 1 a 4, con manejo de errores que le notifica por correo electrónico en caso de falla.
Algo como:
CREATE PROCEDURE TestEmailOnFail
AS
BEGIN
BEGIN TRY
/*
Perform some action that might fail
*/
SELECT 0/0; --THIS WILL FAIL
END TRY
BEGIN CATCH
DECLARE @subject nvarchar(max) = 'Job Failure Notification';
DECLARE @body nvarchar(max) = 'TestEmailOnFail Job Failed'
+ CHAR(10) + CHAR(13) + 'Error Number: ' + CAST(ERROR_NUMBER() AS nvarchar(max))
+ CHAR(10) + CHAR(13) + 'Error Message: ' + ERROR_MESSAGE();
DECLARE @to nvarchar(max) = '[email protected]';
DECLARE @profile_name sysname = 'SQLMailProfileName';
EXEC msdb.dbo.sp_send_dbmail @profile_name = @profile_name,
@recipients = @to, @subject = @subject, @body = @body;
END CATCH
END
Acabo de probar esto usando mi perfil de SQL Mail y mi dirección de correo electrónico y recibí el siguiente correo electrónico:
TestEmailOnFail Job Failed
Error Number: 8134
Error Message: Divide by zero error encountered.
- Cree un paso 4a, que envía un correo electrónico general (como el que señaló @Max) que “uno de los primeros 4 pasos falló”. Puede hacer esto usando el correo de la base de datos o lo que esté usando ahora para alertar sobre fallas en el trabajo.
- El paso 4a está configurado para pasar al paso 5 en caso de éxito.
- El Paso 4 está configurado para pasar al Paso 5 en caso de éxito.
- Los pasos 1-4 están configurados para pasar al paso 4a en caso de falla.
Si necesita saber qué paso falló, es posible que desee poner la lógica en cada paso (similar a lo que Max propuso) para hacer un TRY/CATCH dentro de la lógica del paso del trabajo en lugar de crear 4 pasos del controlador y usar el andamiaje del trabajo.
Recuerda algo, que tienes concesión de añadir una estimación correcta si te ayudó.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)