Поделиться через


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