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

Необходимые действия:

  • Развернут сервер базы данных ms sql server 2008 r2
  • Развернута база данных из бекапа или создана
  • Настроен план обслуживания
  • Создан почтовый ящик от имени кого будет происходить рассылка о результатах работы:

E-mail: mssql-plan@nemdom.ru

Pass: 712mbddr@

Приступаю к воплощению данной задачи:

Подключаюсь к серверу MSSQL и запускаю оснастку Microsoft SQL Server Management Studio:

Start — All Programs — Microsoft SQL Server 2008 R2 — SQL Server Management Studio, авторизуюсь: (local)(SQL Server 10.50.1600 — NEMDOMB\aollo) — после обозначаю оператора (т. е. Контактное лицо или почтовая группа) на имя которого будут приходить все уведомления от MS SQL

Перехожу элемент управления : SQL Server Agent — Operators и через правый клик вызываю меню New Operator…

Name: (Имя) указываю имя хоста текущей системы srv-host

Enabled: ставлю галочку

E-mail name: указываю имя для электронной почты (уведомление на кого) alexander.ollo@nemdom.ru

Pager on duty schedule (Расписание) ничего не отмечаю.

В результате получается созданный оператор:

Создаю "Оператора" кому будут приходить уведомления

Теперь в созданный ранее план LocalPlan по аналогии с другими задачами добавлю еще одну:

(local) (SQL Server 10.50.1600 — NEMDOMB\aollo)Management — Maintenance Plans — LocalPlan (щелкаю по нему два раза левой кнопкой мыши чтобы открыть)

именуется данная задача, как Notify Operator Task (Уведомление оператора) а после настраиваю связь с задачами History Cleanup Task & Maintenance Cleanup Task, т. е. Когда данные задачи отработают в случае успеха запускается задача по уведомлению оператора (зеленая стрелка соединения). Открываем свойства задания Notify Operator Task и приводим настройки к виду:

В созданный ранее план LocalPlan добавляю задачу на уведомление

В итоге связь между заданиями выглядит так:

Настроенная связь между новым заданием и старыми

Но так можно было заметить что данное задание отработает в случае успешного завершения ранее отработавших, а что делать если это будет не так.

Для этого открываем свойства задания:

(local) (SQL Server 10.50.1600 — NEMDOMB\aollo) — SQL Server Agent — Jobs — нахожу свое задание (именуется также как и созданный ранее план обслуживания), т. е. LocalPlan.Subplan_1 — после перехожу на Notifications (Уведомления)

Сейчас уведомление настроено, что если задание отрабатывает с ошибкой, то запись об этом фиксируется в Windows Журнале приложения (Windows Application)

Write to the Windows Applications event log: When the job fails

дополняю:

E-mail: выбираю оператора srv-host и свойства When the job fails в конечном результате должно получиться вот так:

Слать уведомления в случае ошибки

А чтобы добавить уведомление и об успешном завершении просто изменяю на :

  • When the job fails — отправлять предупреждение только тогда, когда при выполнении задания возникла ошибка. Этот вариант выбирается по умолчанию;
  • When the job succeeds — предупреждение будет отправляться только при успешном выполнении задания;
  • When the job completes — предупреждение будет отправляться в любом случае;

Либо же создать еще одно задание, по аналогии с уже имеющимся, но уведомление будет приходить и в случае положительного исполнения. Данное рассмотрение можно и не настраивать, как я убедился в этом позже.

SQL Server Agent — Jobs — New Job — именую его LocalPlan.Subplan_2

General:

Name: LocalPlan.Subplan_2

Owner: NEMDOMB\aollo

Category: Database Maintenance

Steps: – New –

Step name: Subplan_2

Type: SQL Server Integration Services Package

Run as: SQL Server Agent Service Account

Package source: SQL Server

Server: (local)

Log on to the server: Use Windows Authentication

Package: \Maintenance Plans\LocalPlan

Schedules — New

Name: LocalPlan.Subplan_2

а все остальные поля по аналогии с планом 1

Notifications:

Email: srv-host : When the job completes

Далее нужно научить SQL агент работать в роли MTA агента, а то как будет происходить аутентификация на почтовом сервере:

(local) (SQL Server 10.50.1600 — NEMDOMB\aollo) — Management (Управление)Database Mail и через правый клик мышью вызываем Configure Database Mail (Настроить компонент Database Mail), Next – выбираю: Set up Database Mail by performing the following tasks, Next — на запрос:

The Database Mail feature is not available. Would you like to enable this feature? Отвечаю Yes и следом запускаем мастер настройки профиля:

Profile name: srv-host

Description: MSSQL Server for srv-host

Настраиваю SMTP accountAdd

Указываю настройки MTA агента на работу с почтовым ящиком от имени кого будет происходить отправка Email

Нажимаю OK, после меня перебрасывает в настройки профиля, где также нажимаю Next

Создаю профиль для MTA настароек

В следующем окне установим профиль по умолчанию и сделаем его открытым.

Указываем что профиль дефолтный

На следующем окне (Configure System Parameters) настроен можно ничего не изменять, а оставить все по дефолту и далее на окне результирующих настроек нажимаем Finish

Результирующая информация настроек - все хорошо!

После того, как профиль настроен его надо проверить. Для этого переходим в SQL Management в Database Mail и через правый клик вызываем меню: Send Test E-mail…

Проверяю работоспособности отправки тестовым письмом

и через некоторое малое время на почту приходит тестового сообщение:

Тестовое письмо приходит на мой почтовый ящик в клиент Thunderbird

Отлично теперь переходим в свойства SQL Server Agent оснастки SQL Server Management для активации почтового профиля созданного выше.

(local) (SQL Server 10.50.1600 — NEMDOMB\aollo) — SQL Server Agent — Properties — Alert System

Активирую почтовый профиль

На этом можно завершить настройку оповещений на email. Теперь после выполнения регламентного задания на почту будут приходить письма с результатами выполнения планов обслуживания.

Проверяю что в ходе работы план обслуживания LocalPlan придет уведомление, запустив предварительно вручную план LocalPlan:

(local) (SQL Server 10.50.1600 — NEMDOMB\aollo)Management — Maintenance Plans — LocalPlan через правый клик Execute и ожидаем завершения или ошибки:

Запускаю план обслуживания LocalPlan

Но вот стандартного сообщения что бекап завершен мне явно не достаточно

Уведомление/отчет на почту приходит, но явно не информативен

Мне нужно чтобы все выполняемые действия (т. е. Отчет) были отправлены на почту, для этого открываем/переходим в оснастке SQL Server Management Studio:

(local) (SQL Server 10.50.1600 — NEMDOMB\aollo) — Management — Maintenance Plans — выбираю свой план LocalPlan и нажимаю вот здесь для вызова настроек Reporting and Logging

Настраиваю сервис отчета и логирования

По умолчанию отчет о работе плана сохраняется в каталог:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log

изменяю дефолтные значения:

Generate a text file report: отмечаю галочкой

Create a new file: Оставляю данный путь каким он и был

Send report to an email recipient: отмечаю галочкой

Agent operator: указываю srv-host

Logging: (Что включать в лог)

Log extended information: отмечаю галочкой

Отлично, а теперь снова запускаю в ручном режиме план обслуживания и уже теперь на почту приходит более полный информативный отчет

Активировав расширенное логирование на почту уже приходит более интересный отчет - но его информативность зашкаливает

и отчет точно такой же как и ранее что задача отработала.

Для уменьшения выводимой информации в лог советую снять галочку расширенное логирование (Log extended information:), тогда отчет будет конкретным и по существу с указанием каждого отработанного задания в плане.

Microsoft(R) Server Maintenance Utility (Unicode) Version 10.50.1600
Report was generated on "SRV-HOST".
Maintenance Plan: LocalPlan
Duration: 00:13:19
Status: Succeeded.
Details:
Execute T-SQL Statement Task (SRV-HOST)
Task start: 2015-11-24T14:47:16.
Task end: 2015-11-24T14:47:16.
Success

Check Database Integrity Task (SRV-HOST)
Task start: 2015-11-24T14:47:17.
Task end: 2015-11-24T14:49:22.
Success

Rebuild Index Task (SRV-HOST)
Task start: 2015-11-24T14:52:31.
Task end: 2015-11-24T14:55:50.
Success

Update Statistics Task (SRV-HOST)
Task start: 2015-11-24T14:56:09.
Task end: 2015-11-24T14:59:11.
Success

Back Up Database Task (SRV-HOST)
Task start: 2015-11-24T14:59:11.
Task end: 2015-11-24T15:00:35.
Success

History Cleanup Task (SRV-HOST)
Task start: 2015-11-24T15:00:35.
Task end: 2015-11-24T15:00:35.
Success

Maintenance Cleanup Task (SRV-HOST)
Task start: 2015-11-24T15:00:35.
Task end: 2015-11-24T15:00:35.
Success

Notify Operator Task (SRV-HOST)
Task start: 2015-11-24T15:00:35.
Task end: 2015-11-24T15:00:36.
Success

Отлично это мне и нужно было, но вот допустим в тело письма не помещается весь вывод, как быть, можно обратиться к свойствам SQL Server Agent и переопределить количество строк формируемых на лог:

SQL Server Agent — Properties — History, параметр по умолчанию:

  • Maximum job history log size (in rows) = 1000

Теперь когда я для себя уяснил как настроить уведомление о работе запланированного плана обслуживания будь то положительный или отрицательный исход могу смело завершить данную заметку. Все что меня интересовало и все что я не знал до этого момента теперь запечатлено в виде пошаговой заметки и пригодится мне в дальнейшем. На этом я прощаюсь, до встречи с уважением автор блога — ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru