Назад | Перейти на главную страницу

План обслуживания SQL - отправка электронной почты в случае сбоя

У меня есть план обслуживания на моем ящике SQL 2008 - я бы хотел, чтобы он отправлял адрес электронной почты, когда (или если) он не работает. Я настроил почту базы данных и могу отправить тестовое письмо.

Как я могу это сделать?

  1. Настройте агент SQL Server для использования почты базы данных
  2. Создать оператора (-ов) почту, пейджер, часы работы и т. Д.
  3. Настройте план обслуживания для отправки электронной почты соответствующим операторам в зависимости от условий выхода.

http://msdn.microsoft.com/en-us/library/ms186358.aspx

http://technet.microsoft.com/en-us/library/ms175962.aspx

Добавьте в свой план обслуживания задачу «Выполнение SQL», которая вызывает процедуру sp_send_dbmail и связывает с этой задачей маршруты отказа любой из ваших задач.

Мы добавили задачу «Выполнить оператор T-SQL», которая вызывает хранимую процедуру, с именем плана обслуживания в качестве параметра:

EXEC server.schema.SP_SENDALERT 'plan.subplan';

В этой хранимой процедуре мы запрашиваем у SYSJOBS и SYSJOBHISTORY план для получения сообщения о последнем `` сбое '', которое затем отправляем в `` ИТ-поддержку '' как часть send_dbmail (который управляется процедурой, выполняющей цикл через неотправленные сообщения в таблице MESSAGING), что-то вроде этого:

CREATE PROCEDURE SP_SENDALERT (@plan VARCHAR(MAX))
AS
BEGIN

    DECLARE @error VARCHAR(MAX)

    SELECT TOP 1 @error = SJH.[MESSAGE]FROM MSDB.DBO.SYSJOBS SJ
    LEFT JOIN MSDB.DBO.SYSJOBHISTORY SJH ON SJ.JOB_ID = SJH.JOB_ID
    WHERE SJ.ENABLED = 1
    AND SJH.RUN_STATUS = 0
    AND SJ.[NAME] = @plan
    ORDER BY SJH.RUN_DATE, RUN_TIME DESC

    INSERT INTO database.schema.MESSAGING
    (MESSAGE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, RECIPIENTS, RECORD_ADDED)
    VALUES  (1, 'ERROR: ' + @plan, @error, 'itsupport@x.com', GETDATE())

END