Выполение регламентных процедур SQL по расписанию.

Опубликовал max sfer (jmaks) в раздел Программирование - Практика программирования

Выполнение регламентных процедур на SQL, залог хорошей работы базы и спокойного сна.
Частенько программисту приходится следить за sql сервером, дабы хорошо работала "его база". Желательно выполнять данные процедуры глубокой ночью, когда даже самые работящие юзвери спят.

Настроить выполнение регламентных процедур на SQL можно буквально за 10-15 минут. Никаких скриптов писать не нужно, достаточно тех  команд, которые нам рекомендует делать 1С. Это очистка процедурного кэша (DBCC FREEPROCCACHE ), реиндексация (sp_msforeachtable N'DBCC DBREINDEX (''?'')') и обновление статистики (exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN').

Все эти команды будет выполнять SQL Server Agent, так, что позаботьтесь, о том, что бы он запускался автоматически (у меня по умолчанию он не запускался).

Открываем SQL Server Management Studio, конектимся к серверу.

Разворачиваем дерево в  Object Explorer как на рисунке

рис.1

Выбираем вкладку Jobs и выбираем пункт "новое задание"

Открывается окошко нового задания.

рис.2

На вкладке General->Name задаем имя нашего задания.

Далее переходим на вкладку "Шаги"

рис.3

Шаги, это последовательность действий, которая будет выполнятся в нужном вам порядке, с нужными вам повторениями, в нужное вам время, вообщем все для нас любимых Wink.

Создаем "новый шаг"

рис.4

Во вкладке General в поле Step Name задаем ему имя. В поле Type оставляем T-SQL. Выбираем базу (хотя, очистка кэша не привязано к конкретной базе, я все же выбрал, на будущее). В поле "command" пишем свою команду.

Переходим на вкладку Advanced

рис.5

Тут уже определяются количество попыток повторения задания (Retry attemps) через интервал времени (Retry interval). Так же, тут можно определить действия, которые будут выполняться в случае успеха (On success action) и неуспеха (On failure action) выполнения данного шага. У меня выставлен переход к следующему шагу, в обоих случаях. У меня стоит последовательно три шага (три регл задания), которые рекомендует 1С. Это очистка процедурного кэша (DBCC FREEPROCCACHE ), реиндексация (sp_msforeachtable N'DBCC DBREINDEX (''?'')') и обновление статистики (exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN').

 

После определения шагов и вариантов их выполнения, перейдем на интересную вкладку Schedules (расписание). Где вы можете придумать любое расписание, которое вам угодно.

рис.6

Итак, создаем расписание "New".

рис.7

открывается окошко нового расписания.

Задаем ему Имя.

В "Schedule type" выберем тип расписания "Recurring" повторяющееся. (есть еще и другие типы, на вкус и цвет).

Далее выбираем частоту повторения "Daily" дни и выбираем, через сколько дней запускать эти шаги (1 день). Далее ставим время запуска заданий (время, когда нагрузка на базу минимальна).

Жмем ОК.

И теперь определенные нами задания будут выполняться в то время, в той последовательности, которое нам нужно.

Проверить работу заданий можно, просмотрев  историю.

рис.8

Это базовое. Описание настройки регламентных заданий, которые описывает совсем небольшую часть (буквально песчинки) возможностей автоматизирования базы данных. Эти задания можно настраивать так, что бы SQL после их успешного или не успешного выполнения посылал вам письмо на почту или звонил на пейджер Wink и докладывал обстановку.

 

P.S Прошу комментировать и критиковать статью и варианты настройки выполнения заданий. В споре рождается истина Wink

Приветствую советы и дополнения по улучшению работы заданий.

 

 

 

 

 

См. также

PowerTools от 1 000
Комментарии
1. mirco brons (mirco) 70 13.11.09 13:21 Сейчас в теме
(0) По оформлению. Лучше скрины внутри статьи сделай маленькими, а полноразмерные приложи как картинки(они тогда будут в конце).
kirillkr; support; +2 Ответить
2. Александр Медведев (anig99) 2500 13.11.09 13:57 Сейчас в теме
мало... всё это постигается методом тыка... Там ещё блок схемы рисовать можно. А сами регламентные задания ещё Гилёв выкладывал.
3. gilv (Gilev.Vyacheslav) 15.11.09 06:01 Сейчас в теме
а я вот поставлю жирный плюс
чем больше будет написано, как надо делать обслуживание 1С, чтобы предупредить возможные проблемы, тем больше шансов, что админы начнут это делать

афтор, пишы исчо ;)
baracuda; crabzzy; wunderland; kirillkr; artbear; anig99; +6 Ответить 1
4. Pavel Grigoryev (Zen2004) 15.11.09 09:52 Сейчас в теме
5. Дмитрий Елисеев (w-divin) 16.11.09 22:46 Сейчас в теме
Хорошо описано ))) заслуженный plus-ик
6. mishau У (mishau) 17.11.09 17:53 Сейчас в теме
Плюс, а где почитать рекомендации 1с на этот счет?
достаточно тех команд, которые нам рекомендует делать 1С
7. matoid15 matoid15 (matoid15) 18.11.09 15:37 Сейчас в теме
Maintenance Plan Wizard гораздо проще решает описанные шаги! Зачем усложнять)?
8. matoid15 matoid15 (matoid15) 18.11.09 16:32 Сейчас в теме
И первый шаг такой вроде должен быть DBCC FREEPROCCACHE WITH NO_INFOMSGS.
9. Сергей Кобяков (Serjik78) 1266 18.11.09 18:22 Сейчас в теме
Зачет, хоть и знаем, но для новичков очень полезно :) Плюс!
10. Валера (m0r0z) 23.11.09 07:41 Сейчас в теме
Очень информативная статья.
А как такое же можно сделать на PostgreSQL 8.3.3-2.1.
11. rasswet (rasswet) 80 11.12.09 11:18 Сейчас в теме
на будущее: цепляй плиз всё это одним ворд-файлом, я бы качнул и почитал..
12. Vasily Kushnir (vasilykushnir) 62 11.12.09 16:41 Сейчас в теме
И еще добавь BACKUP DATABASE - тоже полезно каждую ночь на всяк пожарный делать.
13. Анна Т (anna_irk) 21.09.11 10:43 Сейчас в теме
развернутый рассказ) все очень понятно
14. Артано Майаров (Артано) 318 11.03.13 05:01 Сейчас в теме
Сегодня у меня с сисадмином дискуссия произошла. Предмет её таков: какова очередность проведения регламентных процедур. Т.е. сначала реиндексируются таблицы, а потом обновляются статистики, или наоборот. Я руководствовался классовым чутьем: статистики строятся по индексам (т.е. статистика распределения индексов), поэтому её нужно делать после реиндексации. Сисадмин же ссылался на описание с сайта 1С где про очередность никаких разъяснений, но описание идет в таком порядке: статистики, реиндексация.
15. Рустам (Borometr) 35 13.03.13 05:59 Сейчас в теме
вот ведь черт побери, у меня рисунки 1,2,6 не отображаются (( А для PostgreSQL можно что-нибудь подобное описать?
16. Игорь (doronin70) 29.03.13 17:30 Сейчас в теме
А действительно, почему рисунки 1,2 и 6 удалены ?
17. Ловыгин Антон (wunderland) 193 10.04.13 11:58 Сейчас в теме
(3) gilv, Повторение - мать учения...
И все равно, пока каждый на эти грабли не наступит...
18. Александр Ваняшкин (udav189) 28.08.14 17:45 Сейчас в теме
не одна из картинок не грузится
19. Евгения + (zhenya17) 20 11.10.16 07:35 Сейчас в теме
Верните картинки, пожалуйста! :)
20. Евгения + (zhenya17) 20 12.10.16 12:49 Сейчас в теме
Поставила за публикацию плюсик, т.к. и без картинок легко разобралась. Спасибо за наводку! ;)