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.

    ms189531.note(ru-ru,SQL.90).gifПримечание.
    Только ошибки sysmessages, записанные в журнал приложения Microsoft Windows, могут привести к отправке предупреждения.
  • [ @severity = ] severity
    Уровень критичности (от 1 до 25), который определяет предупреждение. Любое сообщение Microsoft 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 (электронная почта и сетевое сообщение) и может содержать одно или несколько значений, соединенных логическим оператором OR.

    Значение Описание

    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.

    ms189531.note(ru-ru,SQL.90).gifПримечание.
    Необходимо указать либо аргумент job_id, либо аргумент job_name, но не оба аргумента одновременно.
  • [ @raise_snmp_trap = ] raise_snmp_trap
    Не реализовано в Microsoft 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 при срабатывании.

ms189531.note(ru-ru,SQL.90).gifПримечание.
Этот пример предполагает, что сообщение 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

См. также

Справочник

sp_add_notification (Transact-SQL)
sp_altermessage (Transact-SQL)
sp_delete_alert (Transact-SQL)
sp_help_alert (Transact-SQL)
Хранимая процедура sp_update_alert (Transact-SQL)
sys.sysperfinfo (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005