2016-11-04 5 views
0

У меня есть агент задания SQL, который имеет два этапа работы: PackageA и PackageB. PackageB следует PackageA, но PackageB не должен работать с 06:00 до 18:00. К сожалению, PackageA иногда занимает много времени, заставляя PackageB работать с 6:00 до 18:00. В PackageB У меня есть выражение ограничения +, которое проверяет, находится ли время между 06:00 и 18:00. Если это так, PackageB прекрасно выходит и отправляет электронное письмо оперативнику, напоминающему ему/ей, чтобы перенести пакет PackageB. Однако было бы намного лучше, если бы я мог перепланировать пакет.Расписание одного пакета из пакета SSIS

Логика и пакет:

ExpressionTask --> fills variable @Hour with datepart("Hh",GETDATE()) 

Если найденное значение < 6 или> 18 «нормальный» процедура выполняется или начинает «отправить по электронной почте» и выходит. Я бы хотел добавить команду после отправки сообщения электронной почты, которое планировало бы, что PackageB будет запускаться в тот же вечер в 19:00. В идеальном случае процедура проверяет, есть ли работа для запуска только пакета packageB и запланированного выполнения этого запуска в тот же вечер в 19:00, и если нет существующего задания для запуска PackageB, оно должно быть создано.

Мое чувство говорит, что это должно выполняться с использованием TSQL. Любые предложения или есть ли лучшие способы сделать это, кроме использования TSQL?

Thanx для размышлений со мной!

ответ

1

можно реализовать шаг T-SQL, работа между PackageA и PackageB или его Execute SQL Task в SSIS, который проверяет время и использует WAITFOR заявление ждать до 19:00.

IF DATEPART(HOUR, SYSDATETIME()) >= 6 OR DATEPART(HOUR, SYSDATETIME()) < 18 
BEGIN 
    WAITFOR TIME '19:00'; 
END; 
+0

Очень хорошая идея, проверит, что в понедельник – Henrov