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 di Microsoft SQL Server archiviato nella tabella sysmessages e inviato al registro applicazioni di Microsoft Windows con il livello di gravità indicato determina l'invio di un 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 corrente 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.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 e 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 Microsoft 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.
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.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
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
Vedere anche
Riferimento
sp_add_notification (Transact-SQL)
sp_altermessage (Transact-SQL)
sp_delete_alert (Transact-SQL)
sp_help_alert (Transact-SQL)
sp_update_alert (Transact-SQL)
sys.sysperfinfo (Transact-SQL)
Stored procedure di sistema (Transact-SQL)