Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: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 в составе сообщения уведомления.
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
и состоит из этих элементов.
Элемент формата | Описание |
---|---|
Элемент | Объект производительности, счетчик производительности или именованный экземпляр счетчика. |
Компаратор | Один из следующих операторов: > , < или = . |
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
.
Примеры
Пример 1. Добавление оповещения для задания
Следующий пример добавляет предупреждение (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
Пример 2. Добавление оповещения для порогового значения репликации
В следующем примере добавляется оповещение, чтобы сообщить, когда транзакция репликации превысила пороговое значение задержки:
EXEC 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