В данной статье будет рассмотрен механизм автоматизации выполнения регламентных операций в СУБД MS SQL Server под названием «Maintenance Plans» (Планы обслуживания).
Планы обслуживания (maintenance plans)
В SQL Server есть механизм под названием «Maintenance Plans» (Планы обслуживания), который предназначен для организации выполнения группы заданий по расписанию (или без него). Для того чтобы перейти к данному механизму необходимо в Management Studio: в «Обозревателе объектов» (Object Explorer) выбрать свой экземпляр, далее перейти по дереву в ветку «Управление» (Management), а в ней к «Планы обслуживания» (Maintenance plans).
Рабочая область плана обслуживания состоит из: командной панели, названия и описания плана, списка субпланов и рабочей области текущего субплана. Для субплана можно задать название, описание, расписание и учетную запись под которой будет выполняться субплан. В рабочей области субплана можно располагать различные задачи, а так же задавать очередность и взаимосвязи их выполнения.
Помимо этого, у Планов обслуживания есть своя панель инструментов, которая открывается при редактировании и содержит некоторые предопределенные задачи для выполнения.
Создание плана обслуживания
Добавить новый план можно кликнув правой клавишей мыши на «Планы обслуживания» и выбрав «Создать план обслуживания» (New Maintenance Plan). В открывшемся окне необходимо ввести имя нового плана, нажать «ОК», после чего откроется рабочая область создания Плана обслуживания. Давайте создадим какой-нибудь простой субплан, например, обновления статистики и очистки процедурного кэша. В созданном плане выберем добавленный по умолчанию субплан, переименуем его в «UpdateStatistics» и добавим описание «Обновление статистики и очистка процедурного кэша», учетную запись оставим по умолчанию. Установим расписание, например, каждый день в 01:00.
Закроем окна расписания и свойств субплана нажатиями на кнопки «ОК».
Перейдем к созданию непосредственно самого плана выполнения (добавление задач, очередности и связей):
- Из панели инструментов «перетащим» задачу «Обновление статистики» (Update Statistics Task). Далее, двойным кликом по задаче перейдем к редактированию ее свойств. В поле «базы данных» выберем нашу базу, остальные свойства оставим по умолчанию
- Из панели инструментов «перетащим» задачу «Выполнение инструкции T-SQL» (Execute T-SQL Statement Task). Двойным кликом войдем в свойства задачи, в поле «Инструкция T-SQL» введем: «DBCC FREEPROCCACHE»
- Протянем «стрелку» от задачи обновления статистики к инструкции T-SQL
Здесь также хочу упомянуть что есть 3 типа «стрелок»:
- Успешное выполнение (Success) — значение по умолчанию, обозначается зеленым цветом, управление переходит к следующей задаче только в случае успешного выполнения текущей.
- Ошибка (Failure) — обозначается красным цветом, управление переходит к следующей задаче только в случае ошибки выполнения. Удобно использовать для оповещения оператора.
- Выполнение (Completion) — обозначается серым цветом, управление переходит к следующей задаче независимо от результата выполнения текущей.
В нашем примере использована стрелка «успешного выполнения» т.к. нет особого смысла очищать процедурный кэш если не удалось выполнить обновление статистики. Тем не менее, здесь вполне возможна замена на стрелку «выполнения».
Наш план обслуживания готов, осталось его только сохранить.
Механизм заданий
Перейдем теперь к непосредственному механизму исполняющему Планы обслуживания. После сохранения плана обслуживания, на каждый из субпланов в ветке «Агент SQL Server» (SQL Server Agent) → «Задания» (Jobs) создаются элементы заданий.
В свойствах Задания можно дополнительно настроить:
- Добавить/изменить шаги выполнения. При создании через Планы обслуживания задание состоит из одного шага — выполнение пакета служб SSIS
- Добавить дополнительные расписания в то же задание
- Настроить уведомления об успешном/ошибочном завершении
- Включить/отключить выполнение
Но главным удобством является то что задание можно запустить в ручном режиме в любой момент, для этого необходимо кликнуть правой клавишей мыши на нужном задании и в контекстном меню выбрать «Запустить задание на шаге» (Start Job at Step).
Проверка работоспособности задания
После создания нашего плана, необходимо проверить его работоспособность. Естественно, ожидание результата автоматического выполнения (если настроено расписание) не лучшее решение. Именно здесь нам и поможет вышеописанная возможность ручного запуска задания. После завершения задания можно увидеть результат его выполнения, для этого необходимо правым щелчком мыши открыть контекстное меню задания и выбрать «Просмотр журнала» (View history).