Condividi tramite


sp_add_alert (Transact-SQL)

Si applica a: SQL Server

Crea un avviso.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_add_alert [ @name = ] N'name'
     [ , [ @message_id = ] message_id ]
     [ , [ @severity = ] severity ]
     [ , [ @enabled = ] enabled ]
     [ , [ @delay_between_responses = ] delay_between_responses ]
     [ , [ @notification_message = ] N'notification_message' ]
     [ , [ @include_event_description_in = ] include_event_description_in ]
     [ , [ @database_name = ] N'database_name' ]
     [ , [ @event_description_keyword = ] N'event_description_keyword' ]
     [ , { [ @job_id = ] job_id | [ @job_name = ] N'job_name' } ]
     [ , [ @raise_snmp_trap = ] raise_snmp_trap ]
     [ , [ @performance_condition = ] N'performance_condition' ]
     [ , [ @category_name = ] N'category_name' ]
     [ , [ @wmi_namespace = ] N'wmi_namespace' ]
     [ , [ @wmi_query = ] N'wmi_query' ]
[ ; ]

Argomenti

[ @name = ] N'name'

Nome dell'avviso. Tale nome viene visualizzato nel messaggio di posta elettronica o di cercapersone inviato in risposta all'avviso. Deve essere univoco e può contenere il carattere percentuale (%). @name è sysname, senza impostazione predefinita.

[ @message_id = ] message_id

Numero dell'errore del messaggio che definisce l'avviso In genere corrisponde a un numero di errore nella sysmessages tabella. @message_id è int, con un valore predefinito .0 Se @severity viene usato per definire l'avviso, @message_id deve essere 0 o NULL.

Solo sysmessages gli errori scritti nel registro applicazioni di Microsoft Windows possono causare l'invio di un avviso.

[ @severity = ] gravità

Livello di gravità (da 1 a 25) che definisce l'avviso. @severity è int, con il valore predefinito .0 Qualsiasi messaggio di SQL Server archiviato nella sysmessages tabella inviata al registro applicazioni di Windows con la gravità indicata determina l'invio dell'avviso. Se @message_id viene usato per definire l'avviso, @severity deve essere 0.

[ @enabled = ] abilitato

Indica lo stato corrente dell'avviso. @enabled è tinyint, con il valore predefinito 1 (abilitato). Se 0, l'avviso non è abilitato e non viene attivato.

[ @delay_between_responses = ] delay_between_responses

Periodo di attesa, in secondi, tra le risposte all'avviso. @delay_between_responses è int, con un valore predefinito , 0il che significa che non c'è attesa tra le risposte (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
  • Processo da eseguire

Impostando questo valore, è possibile impedire, ad esempio, l'invio di messaggi di posta elettronica indesiderati quando si verifica ripetutamente un avviso in un breve periodo di tempo.

[ @notification_message = ] N'notification_message'

Messaggio aggiuntivo facoltativo inviato all'operatore come parte della notifica tramite posta elettronica, net sendo cercapersone. @notification_message è nvarchar(512), con il valore predefinito NULL. Specificare @notification_message è utile per aggiungere note speciali, ad esempio procedure correttive.

[ @include_event_description_in = ] include_event_description_in

Indica se la descrizione dell'errore di SQL Server deve essere inclusa come parte del messaggio di notifica. @include_event_description_in è tinyint, con un valore predefinito (5posta elettronica e net send) e può avere uno o più di questi valori combinati con un OR operatore logico.

Importante

Le opzioni e net send pager verranno rimosse da SQL Server Agent in una versione futura di SQL 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 Nessuna
1 E-mail
2 Cellulare 2
4 net send

[ @database_name = ] N'database_name'

Database in cui deve verificarsi l'errore affinché l'avviso venga generato. Se @database_name non viene fornito, l'avviso viene generato indipendentemente dalla posizione in cui si è verificato l'errore. @database_name è sysname, con un valore predefinito .NULL I nomi racchiusi tra parentesi quadre ([ ]) non sono consentiti.

[ @event_description_keyword = ] N'event_description_keyword'

Sequenza di caratteri che devono essere trovati nella descrizione dell'errore di SQL Server nel log dei messaggi di errore. @event_description_keyword è nvarchar(100), con un valore predefinito .NULL Questo parametro è utile per filtrare i nomi degli oggetti , ad esempio customer_table.

Nota

Non è possibile usare caratteri di criteri di ricerca di espressioni Transact-SQL LIKE .

[ @job_id = ] job_id

Numero di identificazione del processo da eseguire in risposta all'avviso. @job_id è uniqueidentifier, con un valore predefinito .NULL

È necessario specificare @job_id o @job_name , ma non è possibile specificare entrambi.

[ @job_name = ] N'job_name'

Nome del processo da eseguire in risposta all'avviso. @job_name è sysname, con il valore predefinito NULL.

È necessario specificare @job_id o @job_name , ma non è possibile specificare entrambi.

[ @raise_snmp_trap = ] raise_snmp_trap

Non implementato in SQL Server versione 7.0. @raise_snmp_trap è tinyint, con un valore predefinito .0

[ @performance_condition = ] N'performance_condition'

Valore espresso nel formato 'ItemComparatorValue'. @performance_condition è nvarchar(512), con un valore predefinito di NULLe è costituito da questi elementi.

Componente del formato Descrizione
Articolo Oggetto prestazioni, contatore delle prestazioni o istanza denominata del contatore.
Comparatore Uno di questi operatori: >, <o =.
valore Valore numerico del contatore.

[ @category_name = ] N'category_name'

Nome della categoria di avvisi. @category_name è sysname, con un valore predefinito .NULL

[ @wmi_namespace = ] N'wmi_namespace'

Spazio dei nomi WMI in cui eseguire query per gli eventi. @wmi_namespace è sysname, con il valore predefinito NULL. Sono supportati solo gli spazi di nomi nel server locale.

[ @wmi_query = ] N'wmi_query'

Query che consente di specificare l'evento WMI per l'avviso. @wmi_query è nvarchar(512), con un valore predefinito .NULL

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Set di risultati

Nessuno.

Osservazioni:

sp_add_alert deve essere eseguito dal msdb database.

Questi sono i casi in cui gli errori o i messaggi generati dalle applicazioni SQL Server e SQL Server vengono inviati al registro applicazioni di Windows e possono quindi generare avvisi:

  • Errori di gravità 19 o superiore sys.messages
  • Qualsiasi RAISERROR istruzione richiamata con WITH LOG la sintassi
  • Eventuali sys.messages errori modificati o creati con sp_altermessage
  • Qualsiasi evento registrato con xp_logevent

SQL Server Management Studio offre 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 correttamente, verificare se:

  • Il servizio SQL Server Agent è in esecuzione

  • L'evento è stato visualizzato nel registro applicazioni di Windows

  • L'avviso è abilitato

  • Gli eventi generati xp_logevent si verificano nel database master. Pertanto, xp_logevent non attiva un avviso a meno che il @database_name per l'avviso sia master o NULL.

Autorizzazioni

Per impostazione predefinita, solo i membri del ruolo predefinito del server amministratore di sistema possono eseguire sp_add_alert.

Esempi

Nell'esempio seguente viene aggiunto un avviso (Test Alert) che esegue il processo Back up the AdventureWorks2022 Database quando viene generato.

Nota

Nell'esempio si presuppone che il messaggio 55001 e il processo Back up the AdventureWorks2022 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 AdventureWorks2022 Database';
GO