Partager via


sp_add_alert (Transact-SQL)

S'applique à : SQL Server

Crée une alerte.

Conventions de la syntaxe Transact-SQL

Syntaxe

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' ]
[ ; ]

Arguments

[ @name = ] N’name'

Le nom de l'alerte. Ce nom apparaît dans le message envoyé par courrier électronique ou par radiomessagerie en réponse à l'alerte. Il doit être unique et peut contenir le caractère pourcentage (%). @name est sysname, sans valeur par défaut.

[ @message_id = ] message_id

Numéro du message d'erreur définissant l'alerte. (Il correspond généralement à un numéro d’erreur dans la sysmessages table.) @message_id est int, avec la valeur par défaut 0. Si @severity est utilisé pour définir l’alerte, @message_id doit être 0 ou NULL.

Seules les sysmessages erreurs écrites dans le journal des applications Microsoft Windows peuvent entraîner l’envoi d’une alerte.

[ @severity = ] gravité

Niveau de gravité (de à 25partir de 1 ) qui définit l’alerte. @severity est int, avec la valeur par défaut 0. Tout message SQL Server stocké dans la sysmessages table envoyée au journal des applications Windows avec la gravité indiquée entraîne l’envoi de l’alerte. Si @message_id est utilisé pour définir l’alerte, @severity doit être 0.

[ @enabled = ] activé

Indique l'état actuel de l'alerte. @enabled est tinyint, avec une valeur par défaut (1activée). Si 0, l’alerte n’est pas activée et ne se déclenche pas.

[ @delay_between_responses = ] delay_between_responses

Période d’attente, en secondes, entre les réponses à l’alerte. @delay_between_responses est int, avec une valeur par défaut , 0ce qui signifie qu’il n’y a pas d’attente entre les réponses (chaque occurrence de l’alerte génère une réponse). La réponse peut prendre l'une des formes suivantes, ou les deux :

  • Une ou plusieurs notifications envoyées par e-mail ou par courrier électronique
  • Tâche à exécuter

En définissant cette valeur, il est possible d’empêcher, par exemple, les messages électroniques indésirables d’être envoyés lorsqu’une alerte se produit à plusieurs reprises pendant une courte période.

[ @notification_message = ] N’notification_message'

Message supplémentaire facultatif envoyé à l’opérateur dans le cadre de la notification de messagerie, net sendou de pagineur. @notification_message est nvarchar(512), avec la valeur par défaut NULL. La spécification de @notification_message est utile pour ajouter des notes spéciales telles que des procédures correctives.

[ @include_event_description_in = ] include_event_description_in

Indique si la description de l’erreur SQL Server doit être incluse dans le message de notification. @include_event_description_in est tinyint, avec une valeur par défaut (5e-mail et net send) et peut avoir une ou plusieurs de ces valeurs combinées avec un OR opérateur logique.

Important

Le pagineur et net send les options seront supprimées de SQL Server Agent dans une version ultérieure de SQL Server. Évitez d'utiliser ces fonctionnalités dans une nouvelle tâche de développement et prévoyez de modifier les applications qui les utilisent actuellement.

Valeur Description
0 None
1 E-mail
2 Pager
4 net send

[ @database_name = ] N’database_name'

Base de données dans laquelle l'erreur doit survenir pour que l'alerte soit déclenchée. Si @database_name n’est pas fourni, l’alerte se déclenche quel que soit l’endroit où l’erreur s’est produite. @database_name est sysname, avec la valeur par défaut NULL. Les noms placés entre crochets ([ ]) ne sont pas autorisés.

[ @event_description_keyword = ] N’event_description_keyword'

Séquence de caractères qui doivent être trouvés dans la description de l’erreur SQL Server dans le journal des messages d’erreur. @event_description_keyword est nvarchar(100), avec la valeur par défaut NULL. Ce paramètre est utile pour filtrer les noms d’objets (par exemple, customer_table).

Remarque

Les caractères de correspondance de modèle d’expression Transact-SQL LIKE ne peuvent pas être utilisés.

[ @job_id = ] job_id

Numéro d'identification du travail à exécuter en réponse à l'alerte. @job_id est uniqueidentifier, avec la valeur par défaut NULL.

Vous devez spécifier @job_id ou @job_name , mais les deux ne peuvent pas être spécifiées.

[ @job_name = ] N’job_name'

Nom du travail à exécuter en réponse à cette alerte. @job_name est sysname, avec la valeur par défaut NULL.

Vous devez spécifier @job_id ou @job_name , mais les deux ne peuvent pas être spécifiées.

[ @raise_snmp_trap = ] raise_snmp_trap

Non implémenté dans SQL Server version 7.0. @raise_snmp_trap est tinyint, avec une valeur par défaut de 0.

[ @performance_condition = ] N’performance_condition'

Valeur exprimée au format « ItemComparatorValue ». @performance_condition est nvarchar(512), avec une valeur par défaut NULL, et se compose de ces éléments.

Élément de format Description
Article Objet de performance, compteur de performances ou instance nommée du compteur.
Comparateur L’un de ces opérateurs : >, <ou =.
Valeur Valeur numérique du compteur.

[ @category_name = ] N’category_name'

Nom de la catégorie d'alerte. @category_name est sysname, avec la valeur par défaut NULL.

[ @wmi_namespace = ] N’wmi_namespace'

Espace de noms WMI permettant de rechercher des événements via des requêtes. @wmi_namespace est sysname, avec la valeur par défaut NULL. Seuls les espaces de noms situés sur le serveur local sont pris en charge.

[ @wmi_query = ] N’wmi_query'

Requête spécifiant l'événement WMI pour l'alerte. @wmi_query est nvarchar(512), avec la valeur par défaut NULL.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Jeu de résultats

Aucune.

Notes

sp_add_alert doit être exécuté à partir de la msdb base de données.

Il s’agit des circonstances dans lesquelles les erreurs/messages générés par LES applications SQL Server et SQL Server sont envoyés au journal des applications Windows et peuvent donc déclencher des alertes :

  • Gravité 19 ou plus sys.messages erreurs
  • Toute RAISERROR instruction appelée avec WITH LOG la syntaxe
  • Toute sys.messages erreur modifiée ou créée à l’aide de sp_altermessage
  • Tout événement journalisé à l’aide de xp_logevent

SQL Server Management Studio est un outil simple, fonctionnant en mode graphique, qui permet de gérer tout le système d’alerte. Son utilisation est recommandée pour configurer une infrastructure d’alertes.

Si une alerte ne fonctionne pas correctement, vérifiez si :

  • Le service SQL Server Agent est en cours d’exécution

  • L’événement s’est produit dans le journal des applications Windows

  • L’alerte est activée

  • Les événements générés avec xp_logevent surviennent dans la base de données master. Par conséquent, xp_logevent ne déclenche pas d’alerte, sauf si la @database_name de l’alerte est master ou NULL.

autorisations

Par défaut, seuls les membres du rôle serveur fixe sysadmin peuvent exécuter la procédure sp_add_alert.

Exemples

L'exemple suivant ajoute une alerte (Test Alert) qui exécute le travail Back up the AdventureWorks2022 Database lorsqu'elle se déclenche.

Remarque

Dans cet exemple, on suppose que le message 55001 et le travail Back up the AdventureWorks2022 Database existent déjà. L’exemple est affiché uniquement à des fins d’illustration.

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