Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 à 1partir de 25 ) 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 |
|
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.messageserreurs - Toute
RAISERRORinstruction appelée avecWITH LOGla syntaxe - Toute
sys.messageserreur modifiée ou créée à l’aide desp_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_logeventsurviennent dans la base de donnéesmaster. Par conséquent,xp_logeventne déclenche pas d’alerte, sauf si la @database_name de l’alerte estmasterouNULL.
autorisations
Par défaut, seuls les membres du rôle serveur fixe sysadmin peuvent exécuter la procédure sp_add_alert.
Exemples
Exemple 1 : Ajouter une alerte pour un travail
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
EXECUTE 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
Exemple 2 : Ajouter une alerte pour un seuil de réplication
L’exemple suivant ajoute une alerte pour vous informer lorsqu’une transaction de réplication a dépassé le seuil de latence :
EXECUTE 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