2011-09-15 67 views
22

Tengo una configuración de trabajo en SQL Server 2008 que envía un correo electrónico de notificación a un operador cuando falla el trabajo.SQL Server Agent Job Notificar varios operadores en caso de error

Pregunta: ¿Es posible configurar un correo electrónico de notificación que se envía a múltiples operadores para ese trabajo específico?

Creo que una posible solución para esto es crear muchas alertas para la base de datos para cada gravedad dada, pero esperaba que hubiera una forma más concisa de hacerlo. Si tuviera que seguir esta ruta, ¿qué errores de gravedad probablemente se desencadenarían de un trabajo fallido? (No creo que necesite todos los 25 para algo así)

¿Se puede hacer esto a través del comando sql para agregar más operadores para notificar una falla? A través de la interfaz de usuario solo puede elegir un solo operador, parece.

+0

IIRC puede definir operadores individuales con múltiples direcciones de correo electrónico si eso le sirve bien a usted? –

+0

No, tengo eso, pero el problema es que solo puede seleccionar un solo operador en la sección de notificación del trabajo – Mike

+0

Sí, no creo que haya una manera de hacer lo que quiere entonces. Cuando quería alertar a varias personas, acabo de configurar un nuevo operador, según recuerdo. '[msdb]. [dbo]. [sysjobs]' tiene columnas para 'operator_id' en lugar de que estén en una tabla separada que admitiría 1 a muchos. –

Respuesta

26

No creo que esto sea posible.

Ciertamente mirando a la estructura de [msdb].[dbo].[sysjobs] las diversas columnas operator_id están en esta tabla, lo que apoyaría la idea de que 1 a muchos no es posible.

Puede crear un nuevo operador con la lista de direcciones de correo electrónico delimitada por dos puntos. Mirando la definición de sysoperators esto es bueno para las cadenas que pueden caber en nvarchar(100) si necesita exceder eso, probablemente podría configurar un grupo de correo electrónico en el intercambio o lo que sea.

+1

Estábamos utilizando el método de grupo de correo electrónico (lista de distribución de Exchange) donde trabajo, hasta que nuestra política de seguridad para DL se cambió en el lado de Exchange para "Requerir que todos los remitentes estén autenticados". Las notificaciones a direcciones de correo electrónico individuales todavía funcionan, por lo que esta ha sido una solución práctica (con suerte temporal). Sin embargo, 100 Caracteres no es un todo perdido de espacio. Para dar una idea, solo 3 direcciones de correo electrónico nos llevaron a 56 caracteres. – Voysinmyhead

+0

Consulte la respuesta a continuación, si es así, elimine esta respuesta, EJECUTE msdb.dbo.sp_update_operator @email_address = N'[email protected]; [email protected] '; – AppleBook89

+0

@apple esto es lo mismo que la respuesta a continuación. Lo "no posible" se refiere a múltiples operadores, no a múltiples direcciones de correo electrónico. –

24

Si la intención es que se notifique a varias personas en su organización si un trabajo falla, puede cambiar la dirección de correo electrónico del operador para incluir varios buzones separando cada casilla de correo con un punto y coma.

Estoy asumiendo su operador notificado se llama JobWatcher:

EXECUTE msdb.dbo.sp_update_operator 
    @name = N'JobWatcher', 
    @email_address = N'[email protected];[email protected]'; 

Ahora [email protected] y [email protected] recibirán mail cuando falla el trabajo.

+4

Esto es correcto, aunque alguien ya ha indicado que el campo solo permite 100 caracteres que pronto se llenan con varias direcciones. –

+0

@MarkHedley es una solución a corto plazo, pero si le resulta difícil realizar cambios en los grupos de su servidor de correo, podría ser útil. Traté de actualizar la respuesta, pero SO está cometiendo un error en este momento. Lo intentaré más tarde. ¡Gracias por la respuesta! –

+1

¡Un desagradable subproducto del problema de los 100 caracteres es que te permitirá poner más de 100 caracteres, pero luego se cortará después de presionar OK! – PeterX

11

La mejor práctica sería crear un grupo en su servidor de correo, enviar las notificaciones al grupo y luego controlar la cantidad de destinatarios del servidor de correo.

+1

Así es como lo hacemos donde trabajo. Supongamos que todos sus administradores forman parte de un grupo de distribución de Outlook llamado DBA. Debería crear un operador de agente llamado 'DBA' con la dirección de correo electrónico '[email protected]' para notificar a todos los miembros del grupo de distribución. –

17

El método más simple que utilizo para notificar a múltiples "OPERATORS" en "JOB FAILURE" es:

En SSMS>SQL Server Agent>Operators crear un nuevo OPERATOR o EDIT existentes y añadir direcciones de correo electrónico separadas por ; en "E-mail name:" caja.

3

Así que esto es lo que se me ocurrió como una solución si la intención es que varias personas en su organización deberían ser notificadas si un trabajo falla y un grupo diferente de varias personas para tener éxito.

Notarás que los pasos 1-3 son las tareas normales para las que se utiliza el trabajo de programación, como lo harías para tu tarea. Puede haber tantos pasos como sea necesario antes de estos, pero el último paso (Paso 3) del proceso necesita romper "En caso de éxito" y "En caso de error" para entrar en correos electrónicos por separado. Además, todos los "En caso de fallo" deben continuar con su "Correo electrónico de error" como se destaca a continuación. Por lo tanto, el grupo de errores recibe mensajes de correo electrónico y el trabajo seguirá fallando para los registros históricos.

1.1

Usted verá la opción de cambiar la dirección de la “En caso de éxito de acción” y “respecto de la falla” en la ficha Opciones avanzadas de los pasos de trabajo.

2

El fracaso de correo electrónico Paso -General Propiedad

3

El fracaso de correo electrónico Paso -Avance Propiedad

4

éxito de correo electrónico Paso -General Propiedad

5

éxito de correo electrónico Paso -Avance Propiedad

6

Para otras personas que necesitan ayuda. Notify multiple operators with difference results

+1

Si bien dbahiker no aborda directamente el problema que plantea la pregunta original, creo que está infravalorado (en -1).Es una solución viable a los límites de los operadores de SQL Agent. – RyanB

+1

muy buena idea para un trabajo en torno – user1760150