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


sp_add_alert (Transact-SQL)

Создает предупреждение.

Значок ссылки на разделСинтаксические обозначения в 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