sp_add_alert (Transact-SQL)
Создает предупреждение.
Синтаксис
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' ]
Аргументы
[ @name = ] 'name'
Имя предупреждения. Имя появляется в сообщении электронной почты или пейджера, отправленном в ответ на предупреждение. Оно должно быть уникальным и содержать символ процента (%). Аргумент name имеет тип sysname и не имеет значения по умолчанию.[ @message_id = ] message_id
Номер сообщения об ошибке, которое определяет предупреждение. (Обычно соответствует номеру ошибки в таблице sysmessages.) Аргумент message_id имеет тип int и значение по умолчанию 0. Если для определения предупреждения используется аргумент severity, то аргумент message_id должен быть равен 0 или NULL.Примечание Только ошибки sysmessages, записанные в журнал приложения Microsoft Windows, могут вызвать отправку предупреждения.
[ @severity = ] severity
Степень серьезности (от 1 до 25), которая определяет предупреждение. Любое сообщение SQL Server, хранимое в таблице sysmessages и отправленное в журнал приложения Microsoft Windows с указанной степенью серьезности, вызывает посылку предупреждения. Аргумент severity имеет тип int и значение по умолчанию 0. Если для определения предупреждения используется аргумент message_id, аргумент severity должен быть равен 0.[ @enabled = ] enabled
Показывает текущее состояние предупреждения. Аргумент enabled имеет тип tinyint и значение по умолчанию 1 (включено). Если этот аргумент принимает значение 0, предупреждение не включено и не срабатывает.[ @delay_between_responses = ] delay_between_responses
Период ожидания (в секундах) между откликами на предупреждение. Аргумент delay_between_responses имеет тип int и значение по умолчанию 0, что означает, что между откликами нет времени ожидания (каждое вхождение предупреждения формирует отклик). Отклик может иметь одну из следующих форм либо обе формы.Одно или несколько уведомлений отправлено через электронную почту или пейджер.
Задание к выполнению.
Установкой этого значения можно предотвратить, например отправку нежелательных почтовых сообщений, если предупреждение возникает многократно за короткий промежуток времени.
[ @notification_message = ] 'notification_message'
Необязательное дополнительное сообщение, отправляемое оператору как часть электронной почты, сообщения net send или уведомления на пейджер. Аргумент notification_message имеет тип nvarchar(512) и значение по умолчанию NULL. Указание аргумента notification_message полезно для добавления специальных комментариев, таких как корректирующие процедуры.[ @include_event_description_in = ] include_event_description_in
Должно ли описание ошибки SQL Server включаться в сообщение уведомления. Аргумент include_event_description_in имеет тип tinyint и значение по умолчанию 5 (электронная почта и сообщение net send) и может иметь одно или несколько значений, соединенных логическим оператором OR.Важно! Параметры Pager и net send будут удалены из SQL Server Agent в будущей версии MicrosoftSQL Server. Старайтесь не использовать эти функции в новых разработках и предусмотрите соответствующие изменения в приложениях, которые используют их в настоящее время.
Значение
Описание
0(по умолчанию)
Нет
1
Электронная почта
2
На пейджер
4
net send
[ @database_name = ] 'database'
База данных, в которой должна произойти ошибка, для которой срабатывает предупреждение. Если аргумент database не указан, предупреждение срабатывает независимо от того, где произошла ошибка. Аргумент database имеет тип sysname. Имена, заключенные в квадратные скобки ([ ]), недопустимы. Значение по умолчанию — NULL.[ @event_description_keyword = ] 'event_description_keyword_pattern'
Последовательность символов, которой должно соответствовать описание ошибки SQL Server. Можно использовать символы-шаблоны оператора LIKE языка Transact-SQL. Аргумент event_description_keyword_pattern имеет тип nvarchar(100) и значение по умолчанию NULL. Этот параметр полезен для фильтрации имен объектов, например %customer_table%.[ @job_id = ] job_id
Идентификационный номер задания, которое запускается в ответ на это предупреждение. Аргумент job_id имеет тип uniqueidentifier и значение по умолчанию NULL.[ @job_name = ] 'job_name'
Имя задания, которое запускается в ответ на это предупреждение. Аргумент job_name имеет тип sysname и значение по умолчанию NULL.Примечание Необходимо указать либо аргумент job_id, либо аргумент job_name, но не оба аргумента одновременно.
[ @raise_snmp_trap = ] raise_snmp_trap
Не реализовано в SQL Server версии 7.0. Аргумент raise_snmp_trap имеет тип tinyint и значение по умолчанию 0.[ @performance_condition = ] 'performance_condition'
Значение, выраженное в формате 'itemcomparatorvalue'. performance_condition типа nvarchar(512) со значением по умолчанию NULL состоит из элементов, приведенных в таблице.Элемент формата
Описание
Item
Объект производительности, счетчик производительности или именованный экземпляр счетчика.
Comparator
Один из этих операторов: >, < или =.
Value
Числовое значение счетчика
[ @category_name = ] 'category'
Имя категории предупреждения. Аргумент category имеет тип sysname и значение по умолчанию NULL.[ @wmi_namespace= ] 'wmi_namespace'
Пространство имен инструментария WMI для запроса событий. Аргумент wmi_namespace имеет тип sysname и значение по умолчанию NULL. Поддерживаются только пространства имен на локальном сервере.[ @wmi_query= ] 'wmi_query'
Запрос, указывающий на событие инструментария WMI для предупреждения. Аргумент wmi_query имеет тип nvarchar(512) и значение по умолчанию NULL.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Результирующие наборы
Нет
Замечания
Процедура sp_add_alert должна быть выполнена из базы данных msdb.
Это обстоятельства, при которых ошибки или сообщения, сформированные SQL Server и приложениями SQL Server, передаются в журнал приложений Windows и, следовательно, могут вызвать следующие предупреждения:
степень серьезности ошибок sysmessages, равная или больше 19;
любая инструкция RAISERROR, выполненная с синтаксисом WITH LOG;
любая ошибка sysmessages, измененная или созданная при помощи процедуры sp_altermessage;
любое событие, занесенное в журнал при помощи процедуры xp_logevent.
Среда SQL Server Management Studio обеспечивает простой графический способ управления всей системой предупреждений и рекомендуется для настройки инфраструктуры предупреждений.
Если предупреждение функционирует неправильно, проверьте:
работает ли служба агента SQL Server;
появилось ли событие в журнале приложений Windows;
включено ли предупреждение.
События, сформированные посредством процедуры xp_logevent, появляются в базе данных master. Поэтому xp_logevent не вызывает срабатывание предупреждения, только если значение аргумента @database_name для предупреждения не равно 'master' или NULL.
Разрешения
По умолчанию только члены предопределенной роли сервера sysadmin могут выполнять процедуру sp_add_alert.
Примеры
Следующий пример добавляет предупреждение (Test Alert), которое запускает задание Back up the AdventureWorks Database при срабатывании.
Примечание |
---|
Этот пример предполагает, что сообщение 55001 и задание Back up the AdventureWorks Database уже существуют. Пример приводится только в целях наглядности. |
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 AdventureWorks Database' ;
GO