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 à 25
partir 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 (1
activé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 , 0
ce 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 send
ou 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 (5
e-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.messages
erreurs - Toute
RAISERROR
instruction appelée avecWITH LOG
la syntaxe - Toute
sys.messages
erreur 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_logevent
surviennent dans la base de donnéesmaster
. Par conséquent,xp_logevent
ne déclenche pas d’alerte, sauf si la @database_name de l’alerte estmaster
ouNULL
.
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