планировать работу SQL, вызванную загрузкой данных - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть база данных Sql Server 2005, где некоторые данные будут обновляться ежедневно из внешних систем (Oracle). В частности, ежедневно будет загружаться несколько таблиц, и мне нужно запланировать запуск задания только после обновления последней таблицы. Как я могу это сделать? Должен ли я использовать таблицу, которая будет хранить конкретную информацию о загрузке данных и регулярно читать ее, как первый шаг в работе sql? Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

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

Думаю, это какая-то таблица (например, SYNC_TBL) в SQL Server, в которую внешняя система вставляет или обновляет некоторые записи, чтобы уведомить об окончании обновления внешней системой.

Если вам необходимо:

  • запустите свою работу, как только обновление завершится - установите триггер на таблицу SYNC_TBL и выполните задание, используя sp_start_job .
  • запустите свою работу через некоторое время после завершения обновления -запланируйте выполнение задания каждые 15 минут и проверьте SYNC_TBL на первом шаге, чтобы увидеть, следует ли продолжать работу

Обратите внимание, что вам необходимо провести еще одну проверку на стороне внешней системы: обновление данных, вероятно, не должноначните снова, пока работа не заканчивает свое выполнение.Вы можете использовать столбец Processed BIT в SYNC_TBL, чтобы указать, обрабатываются ли данные вашей работой или нет.

0 голосов
/ 23 ноября 2011

Последнее, что делает внешняя база данных, это обновляет текущий прогон.Когда ваше задание завершится, установите для него последний запуск = текущий запуск.когда ваша работа начинается (пусть она проверит состояние, если они не различаются, попробуйте agian в течение X периодов; затем не выполняется, если отличается, ваша работа выполняется.

...