sp_add_alert (Transact-SQL)
Crée une alerte.
Conventions de la syntaxe Transact-SQL
Syntaxe
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' ]
Arguments
[ @name = ] 'name'
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 de pourcentage (%). name est de type sysname et n'a pas de valeur par défaut.[ @message_id = ] message_id
Numéro du message d'erreur définissant l'alerte. (En général, il correspond à un numéro d'erreur dans la table sysmessages). L'argument message_id est de type int, avec 0 comme valeur par défaut. Si l'argument severity est utilisé pour définir l'alerte, la valeur de message_id doit être 0 ou NULL.[!REMARQUE]
Seules les erreurs sysmessages figurant dans le journal des applications Microsoft Windows peuvent provoquer le déclenchement d'une alerte.
[ @severity = ] severity
Niveau de gravité définissant l'alerte (compris entre 1 et 25). Tout message SQL Server stocké dans la table sysmessages envoyé vers le journal des applications Microsoft Windows avec les causes de gravité indiquées provoque l'envoi de l'alerte. severity est de type int, avec 0 comme valeur par défaut. Si l'argument message_id est utilisé pour définir l'alerte, la valeur de severity doit être 0.[ @enabled = ] enabled
Indique l'état actuel de l'alerte. enabled est de type tinyint, avec 1 (activé) comme valeur par défaut. La valeur 0 indique que l'alerte n'est pas activée et qu'elle ne se déclenche pas.[ @delay_between_responses = ] delay_between_responses
Délai d'attente, en secondes, entre les réponses à l'alerte. L'argument delay_between_responsesest de type int, avec 0 comme valeur par défaut. Cette valeur indique qu'il n'y a aucun délai 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 courrier électronique ou par radiomessagerie
Un travail à exécuter
En définissant cette valeur, il est possible d'éviter, par exemple, l'envoi d'un flot de messages par courrier électronique lorsqu'une alerte se produit à plusieurs reprises en peu de temps.
[ @notification_message = ] 'notification_message'
Message supplémentaire facultatif envoyé à l'opérateur avec la notification par courrier électronique, net send ou radiomessagerie. notification_message est de type nvarchar(512), avec NULL comme valeur par défaut. La spécification de l'argument notification_message est utile pour l'ajout de remarques particulières, par exemple l'indication de procédures correctives.[ @include_event_description_in = ] include_event_description_in
Argument à utiliser si la description de l'erreur SQL Server doit être incluse dans le message de notification. include_event_description_in* *est de type tinyint, avec 5 (messagerie électronique et net send) comme valeur par défaut et peut avoir une ou plusieurs de ces valeurs combinées à un opérateur logique OR.Important
Les options Radiomessagerie et net send seront supprimées de l'Agent SQL Server dans une version future de Microsoft 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 (valeur par défaut)
Aucun
1
Courrier électronique
2
Récepteur de radiomessagerie
4
net send
[ @database_name = ] 'database'
Base de données dans laquelle l'erreur doit survenir pour que l'alerte soit déclenchée. Si databasen'est pas utilisée, l'alerte se déclenche indépendamment de l'endroit où l'erreur s'est produite. database est de type sysname. Les noms placés entre crochets ([ ]) ne sont pas autorisés. La valeur par défaut est NULL.[ @event_description_keyword = ] 'event_description_keyword_pattern'
Séquence de caractères à laquelle la description de l'erreur SQL Server doit être conforme. Les caractères correspondant au modèle d'expression Transact-SQL LIKE sont admis. event_description_keyword_pattern est de type nvarchar(100), avec NULL comme valeur par défaut. Ce paramètre est utile pour filtrer les noms d'objets (par exemple, %customer_table%).[ @job_id = ] job_id
Numéro d'identification du travail à exécuter en réponse à l'alerte. job_id est de type uniqueidentifier, avec NULL comme valeur par défaut.[ @job_name = ] 'job_name'
Nom du travail à exécuter en réponse à cette alerte. job_nameest de type sysname, avec NULL comme valeur par défaut.[!REMARQUE]
Vous devez définir la valeur de job_id ou de job_name, mais pas les deux valeurs à la fois.
[ @raise_snmp_trap = ] raise_snmp_trap
Non implémenté dans SQL Server version 7.0. raise_snmp_trap est de type tinyint, avec 0 comme valeur par défaut.[ @performance_condition = ] 'performance_condition'
Valeur exprimée au format 'itemcomparatorvalue'. performance_condition est de type nvarchar(512) avec NULL comme valeur par défaut, et est constitué des éléments suivants.Élément de format
Description
Item
Objet de performances, compteur de performances ou instance nommée du compteur.
Comparator
Un des opérateurs suivants : >, < ou =
Value
Valeur numérique du compteur.
[ @category_name = ] 'category'
Nom de la catégorie d'alerte. category est de type sysname, avec NULL comme valeur par défaut.[ @wmi_namespace= ] 'wmi_namespace'
Espace de noms WMI permettant de rechercher des événements via des requêtes. wmi_namespace est de type sysname, avec NULL comme valeur par défaut. Seuls les espaces de noms situés sur le serveur local sont pris en charge.[ @wmi_query= ] 'wmi_query'
Requête spécifiant l'événement WMI pour l'alerte. wmi_query est de type nvarchar(512), avec NULL comme valeur par défaut.
Valeurs des codes de retour
0 (réussite) ou 1 (échec)
Jeux de résultats
Aucun
Notes
La procédure sp_add_alert doit être exécutée à partir de la base de données msdb.
La liste suivante indique les circonstances pour lesquelles les erreurs ou les messages générés par SQL Server et les applications SQL Server sont transmis au journal des applications Windows et peuvent dès lors déclencher des alertes :
les erreurs sys.messages d'un niveau de gravité égal ou supérieur à 19 ;
toute instruction RAISERROR appelée avec la syntaxe WITH LOG ;
toute erreur sys.messages modifiée ou créée avec la procédure sp_altermessage ;
tout événement consigné avec la procédure 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 que :
Le service Agent SQL Server est en cours d'exécution.
L'événement est consigné dans le journal des applications Windows.
L'alerte est activée.
Les événements créés à l'aide de xp_logevent surviennent dans la base de données master. Ainsi, la procédure xp_logevent ne déclenche pas d'alerte sauf si la valeur de @database_name pour 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 AdventureWorks2012 Database lorsqu'elle se déclenche.
[!REMARQUE]
Dans cet exemple, on suppose que le message 55001 et le travail Back up the AdventureWorks2012 Database existent déjà. Cet exemple n'est donné qu'à titre indicatif.
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 AdventureWorks2012 Database' ;
GO
Voir aussi
Référence
sp_add_notification (Transact-SQL)
sp_altermessage (Transact-SQL)
sp_delete_alert (Transact-SQL)
sp_update_alert (Transact-SQL)