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 Microsoft Windows con la gravità indicata fa sì che l'avviso venga inviato. 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