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