Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Esempio 1- Aggiungere un avviso per un processo
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
Esempio 2- Aggiungere un avviso per una soglia di replica
Nell'esempio seguente viene aggiunto un avviso per comunicare quando una transazione di replica ha superato la soglia di latenza:
EXEC msdb.dbo.sp_add_alert @name=N'Replication Warning: Transactional replication latency (Threshold: latency)',
@message_id=14161,
@severity=0,
@enabled=1,
@delay_between_responses=30,
@include_event_description_in=5,
@category_name=N'Replication',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO