sp_add_alert (Transact-SQL)
Crea un avviso.
Sintassi
sp_add_alert [ @name = ] 'name'
[ , [ @message_id = ] message_id ]
[ , [ @severity = ] severity ]
[ , [ @enabled = ] enabled ]
[ , [ @delay_between_responses = ] delay_between_responses ]
[ , [ @notification_message = ] 'notification_message' ]
[ , [ @include_event_description_in = ] include_event_description_in ]
[ , [ @database_name = ] 'database' ]
[ , [ @event_description_keyword = ] 'event_description_keyword_pattern' ]
[ , { [ @job_id = ] job_id | [ @job_name = ] 'job_name' } ]
[ , [ @raise_snmp_trap = ] raise_snmp_trap ]
[ , [ @performance_condition = ] 'performance_condition' ]
[ , [ @category_name = ] 'category' ]
[ , [ @wmi_namespace = ] 'wmi_namespace' ]
[ , [ @wmi_query = ] 'wmi_query' ]
Argomenti
[ @name = ] 'name'
Nome dell'avviso. Tale nome viene visualizzato nel messaggio di posta elettronica o di cercapersone inviato in risposta all'avviso. Il nome deve essere univoco e può includere il carattere %. name è di tipo sysname e non prevede alcun valore predefinito.[ @message_id = ] message_id
Numero dell'errore del messaggio che definisce l'avviso (corrisponde in genere a un numero di errore della tabella sysmessages). message_id è di tipo int e il valore predefinito è 0. Se l'avviso viene definito mediante severity, message_id deve essere 0 o NULL.[!NOTA]
Solo gli errori della tabella sysmessages che vengono scritti nel registro applicazioni di Microsoft Windows NT possono provocare l'invio di un avviso.
[ @severity = ] severity
Livello di gravità, compreso tra 1 e 25, che definisce l'avviso. Qualsiasi messaggio SQL Server archiviato nella tabella sysmessages inviato al registro applicazioni di Microsoft Windows con indicazione della gravità provoca l'invio dell'avviso. severity è di tipo int e il valore predefinito è 0. Se l'avviso viene definito mediante message_id, severity deve essere 0.[ @enabled =] enabled
Indica lo stato attuale dell'avviso. enabled è di tipo tinyint e il valore predefinito è 1 (attivato). Se è uguale a 0, l'avviso non viene abilitato né attivato.[ @delay_between_responses = ] delay_between_responses
Periodo di attesa, in secondi, tra le risposte all'avviso. delay_between_responsesè di tipo int e il valore predefinito è 0, in base al quale tra le risposte non esiste alcun intervallo di attesa e ogni occorrenza dell'avviso genera una risposta. La risposta può assumere una delle due forme seguenti:Una o più notifiche inviate tramite posta elettronica o cercapersone.
Un processo da eseguire.
L'impostazione di tale valore impedisce, ad esempio, l'invio di più messaggi di posta elettronica quando un avviso viene generato ripetutamente in un breve periodo di tempo.
[ @notification_message = ] 'notification_message'
Messaggio aggiuntivo facoltativo inviato all'operatore nell'ambito della notifica per posta elettronica, net send o cercapersone. notification_message è di tipo nvarchar(512) e il valore predefinito è NULL. L'argomento notification_message risulta utile per aggiungere note speciali, ad esempio procedure di correzione.[ @include_event_description_in = ] include_event_description_in
Indica se la descrizione dell'errore di SQL Server deve essere inclusa nel messaggio di notifica. include_event_description_inè di tipo tinyint e il valore predefinito è 5 (posta elettronica e net send). I possibili valori, combinabili con l'operatore logico OR, sono i seguenti.Importante Le opzioni Cercapersone e net send verranno rimosse da SQL Server Agent in una versione futura di MicrosoftSQL Server. Evitare pertanto di utilizzarle in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui sono state implementate.
Valore
Descrizione
0 (predefinito)
Nessuno
1
Posta elettronica
2
Cercapersone
4
net send
[ @database_name =] 'database'
Database in cui deve verificarsi l'errore affinché l'avviso venga generato. Se databaseviene omesso, l'avviso viene attivato indipendentemente dal database in cui si è verificato l'errore. database è di tipo sysname. I nomi inclusi tra parentesi quadre ([ ]) non sono ammessi. Il valore predefinito è NULL.[ @event_description_keyword = ] 'event_description_keyword_pattern'
Sequenza di caratteri della descrizione dell'errore di SQL Server. È possibile utilizzare i caratteri dei criteri di ricerca dell'espressione LIKE di Transact-SQL. event_description_keyword_pattern è di tipo nvarchar(100) e il valore predefinito è NULL. Questo parametro risulta utile per l'applicazione di filtri ai nomi di oggetto, ad esempio %customer_table%.[ @job_id =] job_id
Numero di identificazione del processo da eseguire in risposta all'avviso. job_id è di tipo uniqueidentifier e il valore predefinito è NULL.[ @job_name =] 'job_name'
Nome del processo da eseguire in risposta all'avviso. job_name è di tipo sysname e il valore predefinito è NULL.[!NOTA]
È necessario specificare l'argomento job_id oppure l'argomento job_name, ma non è possibile specificarli entrambi.
[ @raise_snmp_trap = ] raise_snmp_trap
Non implementato in SQL Server versione 7.0. raise_snmp_trap è di tipo tinyint e il valore predefinito è 0.[ @performance_condition = ] 'performance_condition'
Valore espresso nel formato "itemcomparatorvalue". performance_condition è di tipo nvarchar(512) e il valore predefinito è NULL. È costituito dagli elementi seguenti.Componente del formato
Descrizione
Item
Oggetto prestazioni, contatore delle prestazioni o istanza denominata del contatore
Comparator
Uno degli operatori seguenti: >, <, =
Value
Valore numerico del contatore
[ @category_name =] 'category'
Nome della categoria di avvisi. category è di tipo sysname e il valore predefinito è NULL.[ @wmi_namespace= ] 'wmi_namespace'
Spazio dei nomi WMI in cui eseguire query per gli eventi. wmi_namespace è di tipo sysname e il valore predefinito è NULL. Sono supportati solo gli spazi di nomi nel server locale.[ @wmi_query= ] 'wmi_query'
Query che specifica l'evento WMI per l'avviso. wmi_query è di tipo nvarchar(512) e il valore predefinito è NULL.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Set di risultati
Nessuno
Osservazioni
La stored procedure sp_add_alert deve essere eseguita nel database msdb.
Di seguito sono descritti i casi in cui gli errori/messaggi generati da SQL Server e da applicazioni di SQL Server vengono inviati al registro applicazioni di Windows in modo da poter generare avvisi:
Errori della tabella sysmessages con livello di gravità maggiore o uguale a 19
Qualsiasi istruzione RAISERROR richiamata con la clausola WITH LOG
Qualsiasi errore della tabella sysmessages modificato o creato tramite la procedura sp_altermessage
Qualsiasi evento registrato tramite la procedura xp_logevent
SQL Server Management Studio include un semplice strumento grafico per la gestione del sistema di avvisi ed è lo strumento consigliato per la configurazione di un'infrastruttura di avvisi.
Se un avviso non funziona adeguatamente, controllare se:
Il servizio SQL Server Agent è in esecuzione.
L'evento è incluso nel registro applicazioni di Windows.
L'avviso è attivato.
Gli eventi generati tramite la stored procedure xp_logevent si verificano nel database master. Pertanto, xp_logevent genera un avviso solo se @database_name per l'avviso è 'master' o NULL.
Autorizzazioni
Per impostazione predefinita, solo i membri del ruolo predefinito del server sysadmin possono eseguire sp_add_alert.
Esempi
Nell'esempio seguente viene aggiunto un avviso (Test Alert) che esegue il processo Back up the AdventureWorks Database quando viene generato.
[!NOTA]
Nell'esempio si presuppone che il messaggio 55001 e il processo Back up the AdventureWorks Database siano già esistenti. Questo esempio viene fornito solo a scopo illustrativo.
USE msdb ;
GO
EXEC dbo.sp_add_alert
@name = N'Test Alert',
@message_id = 55001,
@severity = 0,
@notification_message = N'Error 55001 has occurred. The database will be backed up...',
@job_name = N'Back up the AdventureWorks Database' ;
GO