Была задача:
При отдельных задачах бэкапа и архивирования файлов с переносом, вылавливались моменты, когда копирование начиналось раньше, чем закончатся бэкапы. Или наоборот. Файлы ещё не сжались и не скопировались, а бэкап уже заново начал выгружаться. Разумеется простой вариант - поставили интервал побольше между запусками заданий. Но встал вопрос, можно ли контролировать завершение выполнения задания и как-то ускорить выполнение бэкапов.
Воображением сгенерирована такая схема:
1. Делим общий список баз для бэкапа на два, что бы задачи выполнять одновременно для каждого "потока".
2. Делаем полный бэкап.
3. Делаем разностный бэкап (раз в час),
НО, что бы отслеживать завершение его полного цикла, запускаем его с нужной задержкой. Т.е. одним скриптом (не задачей), с задержкой в виде Delay(). Это сделано было потому, что через задачи, успешное завершение почему-то возвращалось уже на основании запуска задачи.
4. Когда все разностные сделались, в конце запускаем инструкцию по архивированию и перемещению бэкапов.
Тестовые запуски делал, вроде отрабатывает нормально. Небольшой прирост по скорости заметил, но он субъективный - без замеров. Не совсем представляю как сделать.
Вопросы:
1. Правильно ли я предполагаю, что одновременный запуск задач по бэкапам по сути даст MS SQL распределить на потоки (Thread) их выполнение?
2. Насколько критично, что процесс разностного бэкапа будет выполнятся в течении всего дня до его завершения? Вообще насколько корректно, или стоит процедурно работать с заданиями агента?