2011-09-15 10 views
22

Ho una configurazione di lavoro in SQL Server 2008 che invia un messaggio di notifica a un operatore quando il processo non riesce.Processo SQL Server Agent Notifica più operatori in caso di errore

Domanda: È possibile impostare un'email di notifica inviata a più operatori per quel lavoro specifico?

Credo che una soluzione possibile per questo è di creare un sacco di avvisi per il database per ogni gravità determinata, ma speravo che ci fosse un modo più conciso per fare questo. Se dovessi seguire questa strada, quali errori di gravità verrebbero probabilmente innescati da un lavoro fallito? (Non credo che richiederei tutti i 25 per qualcosa del genere)

Questo può essere fatto tramite il comando sql per aggiungere più operatori alla notifica in caso di errore? Attraverso l'interfaccia utente puoi solo scegliere un singolo operatore.

+0

IIRC è possibile definire singoli operatori con più indirizzi di posta elettronica se ciò è vantaggioso per voi? –

+0

No, ma il problema è che puoi selezionare un solo operatore nella sezione di notifica del lavoro. – Mike

+0

Sì, non penso che ci sia un modo per fare ciò che vuoi allora. Quando ho voluto avvisare più persone ho appena creato un nuovo operatore, come ricordo. '[msdb]. [dbo]. [sysjobs]' ha colonne per 'operator_id' piuttosto che essere in una tabella separata che supporta 1 a molti. –

risposta

26

Non credo sia possibile.

Certamente guardando la struttura di [msdb].[dbo].[sysjobs] le varie colonne operator_id si trovano in questa tabella stessa che supportano l'idea che 1 a molti non è possibile.

È possibile creare un nuovo operatore con l'elenco di indirizzi di posta elettronica delimitati da punto e virgola. Guardando la definizione di sysoperators questo è un bene per le stringhe che possono essere adattate allo nvarchar(100) se è necessario superarlo, probabilmente è possibile impostare un gruppo di posta elettronica in scambio o altro.

+1

Stavamo utilizzando il metodo del gruppo di posta elettronica (elenco di distribuzione di Exchange) in cui lavoro, fino a quando la nostra politica di sicurezza per i DL non è stata modificata sul lato Exchange in "Richiedi che tutti i mittenti siano autenticati". Le notifiche ai singoli indirizzi di posta elettronica funzionano ancora, quindi questa è stata una comoda soluzione (si spera temporaneamente). Tuttavia, 100 personaggi non sono completamente perduti nello spazio. Per dare un'idea, solo 3 indirizzi e-mail ci hanno portato a 56 caratteri. – Voysinmyhead

+0

si prega di vedere la risposta sotto, se questo è vero, si prega di cancellare questa risposta, EXECUTE msdb.dbo.sp_update_operator @email_address = N'[email protected]; [email protected] '; – AppleBook89

+0

@apple questo è uguale alla risposta seguente. Il "non possibile" si riferisce a più operatori non più indirizzi e-mail. –

24

Se l'intenzione è che più persone della propria organizzazione vengano avvisate in caso di errore, è possibile modificare l'indirizzo e-mail dell'operatore per includere più caselle postali separando ciascuna casella di posta con un punto e virgola.

Sto assumendo il vostro operatore notificato si chiama JobWatcher:

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

Ora [email protected] e [email protected] riceveranno la posta quando il lavoro viene a mancare.

+4

Questo è corretto anche se qualcuno ha già dichiarato che il campo consente solo 100 caratteri che si riempiranno presto di più indirizzi. –

+0

@MarkHedley è una soluzione a breve termine, ma se è difficile apportare modifiche ai gruppi sul server di posta, potrebbe comunque essere utile. Ho provato ad aggiornare la risposta, ma SO sta sbagliando proprio ora. Ci riproverò più tardi. Grazie per il feedback! –

+1

Un brutto sottoprodotto del problema di 100 caratteri è che ti consentirà di inserire più di 100 caratteri, ma poi di tagliarlo dopo aver premuto OK! – PeterX

11

La procedura consigliata sarebbe quella di creare un gruppo sul server di posta, inviare le notifiche al gruppo e quindi controllare il numero di destinatari dal server di posta.

+1

Ecco come lo facciamo dove lavoro. Dite che tutti i vostri amministratori fanno parte di un gruppo di distribuzione di Outlook chiamato DBA. Dovresti creare un operatore agente chiamato "DBAs" con l'indirizzo email "[email protected]" per informare tutti nel gruppo di distribuzione. –

17

Il metodo più semplice che uso per comunicare multipla "OPERATORS" su "JOB FAILURE" è quello di:

In SSMS>SQL Server Agent>Operators creare un nuovo OPERATOR o EDIT esistenti e aggiungere altri indirizzi email separati da ; in "E-mail name:" scatola.

3

Quindi questo è quello che è venuto fuori con una soluzione se l'intenzione è che più persone nella vostra organizzazione dovrebbero essere notificate se un lavoro fallisce e un gruppo diverso di più persone per i successi.

Si noterà che le fasi 1-3 sono le normali attività per le quali viene utilizzato il lavoro di pianificazione come si farebbe per l'attività. È possibile eseguire tutti i passaggi necessari prima di questi, ma l'ultimo passaggio (Passaggio 3) del processo deve interrompere "In caso di successo" e "In caso di errore" per accedere a e-mail separate. Inoltre, tutti gli "In caso di errore" devono continuare con la "E-mail di fallimento", come evidenziato di seguito. In questo modo, il gruppo Failure riceve e-mail e il processo continua a non riuscire per i record storici.

1.1

Si vedrà la possibilità di cambiare la direzione dell ' “azione In caso di successo” e “On Failure azione” nella scheda Avanzate delle fasi di lavoro.

2

mancata Email Passo -General Proprietà

3

mancata Email Passo -Advance Proprietà

4

Successo Email Passo -General Proprietà

01.235.164,106 mila

5

Successo Email Passo -Advance Proprietà

6

Per gli altri nel bisogno di aiuto. Notify multiple operators with difference results

+1

Mentre dbahiker non affronta direttamente il problema che pone la domanda originale, penso che sia sottovalutato (a -1).È una soluzione praticabile ai limiti degli operatori di SQL Agent. – RyanB

+1

buona idea per un lavoro in giro – user1760150

Problemi correlati