Планирование заданий через хранимую процедуру SQL Server - PullRequest
0 голосов
/ 11 мая 2019

Мне нужно написать хранимые процедуры для планирования конвейеров Azure (Задания).

  • Частота ---- Сколько раз партия должна запускаться за день
  • В столбце времени указывается время начала партии

Таблица A будет содержать статические записи для партий. Частота обозначает за день, сколько раз будет выполняться задание, а в столбце хронирования время выполнения пакета будет разделено запятой (,)

Batch_ID   Batch_Name  Frequency    Timing 
-----------------------------------------------
1          ABC           2          7:00,13:00

Таблица B будет иметь список заданий, соответствующих одному конкретному пакету. Эта таблица будет статической и будет иметь одноразовую запись, как таблица B.

Таблица B

Batch_ID   JOB_ID       JOB_NM
--------------------------------
1            1           Job_1
1            2           Job_1

Таблица C будет содержать зависимости заданий в пакете

Таблица C

Batch_ID    JOB_ID      DEPENDENY_JOB_ID
----------------------------------------
1             1
1             2              1

Когда Пакетное выполнение выполняется, таблица D будет заполнена временем пакетного запуска.

Таблица D

Batch_ID   Batch_Name   Status    start_Time   end_time
-------------------------------------------------------
1             abc       Start     7:00

Как только таблица E заполняется, таблица D заполняется сведениями о задании. Задание 2 запускается только после завершения задания 1.

Таблица E

Batch_ID   Batch_Name  JOB_ID    JOB_NM      Start_Time     End_Time
----------------------------------------------------------------------
1            abc         1        Job_1       7:00
1            abc         2        Job_2       7:15

Когда задание 2 будет завершено, мы обновим столбец времени окончания таблицы D.

После того, как первый запуск завершен, нам нужно проверить столбец частоты таблицы A и снова запустить задание (если оно больше 1) и снова выполнить все упражнение.

В случае, если наша 1-я партия не была завершена до времени начала партии 2, мы должны удерживать 2-ю партию до завершения партии 1.

Может ли кто-нибудь помочь мне, как начать это?

1 Ответ

0 голосов
/ 13 мая 2019

Как сказал @Gordon Linoff, у вас нет вопроса по вашему "вопросу".

Если я могу высказать свое мнение по этому поводу, я не думаю, что это хорошая идея для дизайна - разделить вашу логику между фабрикой данных и хранимыми процедурами в базе данных. Помните, что в будущем пользователь, обслуживающий конвейеры, может не иметь доступа к базе данных и не сможет понять половину ее. Даже если вы сами это делаете, через 2 года вы, скорее всего, забудете, что сделали, и следование линии между двумя ресурсами может отнять у вас больше времени, чем следовало бы. Это также усложнит поиск и устранение неисправностей.

Это действительно зависит от сценария, над которым вы работаете, но подведите итог: попробуйте связать всю логику в одном месте.

Надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...