sp_add_alert (Transact-SQL)

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 SQL Server archiviato nella tabella sysmessages inviato al registro applicazioni di Microsoft Windows con indicazione della gravità provoca l'invio dell'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 attuale 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.

    Nota importanteImportante

    Le opzioni Cercapersone e net send verranno rimosse da SQL Server Agent in una versione futura di MicrosoftSQL 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 (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. I nomi inclusi tra parentesi quadre ([ ]) non sono ammessi. 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 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.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

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.

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