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 , 0
il 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 send
o 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 (5
posta 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 |
|
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 NULL
e è 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 conWITH LOG
la sintassi - Eventuali
sys.messages
errori modificati o creati consp_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 databasemaster
. Pertanto,xp_logevent
non attiva un avviso a meno che il @database_name per l'avviso siamaster
oNULL
.
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