sp_add_alert (Transact-SQL)
Crée une alerte.
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 (%). L'argument 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. (Il correspond normalement à un numéro d'erreur dans la table sysmessages). 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.Notes
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. L'argument 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. L'argument enabled est de type tinyint, avec la valeur 1 par défaut (activé). 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
Période d'attente, en secondes, qui s'écoule entre les réponses aux alertes. L'argument delay_between_responses est 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 de notification supplémentaire facultatif envoyé à l'opérateur par messagerie électronique, par net send (envoi réseau) ou par radiomessagerie. L'argument 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. L'argument include_event_description_in est de type tinyint, avec ** 5** comme valeur par défaut (messagerie électronique et net send). Il peut prendre une ou plusieurs des valeurs suivantes, associées à un opérateur logique OR.Important
Les options Radiomessagerie et NET SEND ne seront pas supprimés 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 (par défaut)
Aucune
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 database n'est pas utilisé, 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. L'argument 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. L'argument 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 à l'alerte. L'argument job_name est de type sysname, avec NULL comme valeur par défaut.Notes
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
N'est pas implémenté dans SQL Server version 7.0. L'argument raise_snmp_trap est de type tinyint, avec 0 comme valeur par défaut.[ @performance_condition = ] 'performance_condition'
Valeur exprimée dans le format 'itemcomparatorvalue'. L'argument 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. L'argument 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. L'argument wmi_query est de type nvarchar(512), avec NULL comme valeur par défaut.
Valeurs des codes de retour
0 (succès) ou 1 (échec)
Ensembles 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 de serveur fixe sysadmin peuvent exécuter la procédure sp_add_alert.
Exemple
L'exemple suivant ajoute une alerte (Test Alert) qui exécute le travail Back up the AdventureWorks2008R2 Database lorsqu'elle se déclenche.
Notes
Dans cet exemple, on suppose que le message 55001 et le travail Back up the AdventureWorks2008R2 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 AdventureWorks2008R2 Database' ;
GO