У меня есть план обслуживания на моем ящике SQL 2008 - я бы хотел, чтобы он отправлял адрес электронной почты, когда (или если) он не работает. Я настроил почту базы данных и могу отправить тестовое письмо.
Как я могу это сделать?
Добавьте в свой план обслуживания задачу «Выполнение 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