2016-11-04 5 views
0

두 가지 작업 단계가있는 SQL 작업 에이전트 인 PackageA와 PackageB가 있습니다. PackageB는 PackageA를 따르지만 PackageB는 06:00 - 18:00 사이에 실행하지 않아야합니다. 아쉽게도 PackageA가 6:00에서 18:00 사이에 실행되는 데 시간이 오래 걸리는 경우가 있습니다. 패키지 B에는 시간이 06:00에서 18:00 사이인지 확인하는 제약 + 표현식이 있습니다. 그렇다면, 패키지 B는 멋지게 종료되고, 패키지 B를 다시 스케줄하도록 이메일을 보냅니다. 그러나 내가 패키지를 다시 스케줄 할 수 있다면 상황이 훨씬 더 좋아질 것입니다. PackageB에서SSIS 패키지 내에서 단일 패키지 예약

논리 :

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

발견 된 값이 < 6> 18 '정상'절차를 실행하거나 그것이 '이메일 보내기'를 종료합니다 시작합니다. 내가 원하는 것은 PackageB가 19:00에 같은 날 저녁에 한 번 실행되도록 예약하는 전자 메일을 보낸 후에 명령을 추가하는 것입니다. 이상적으로 프로 시저에서는 packageB를 실행하기위한 작업이 있는지 여부를 확인하고 19:00에 그날 저녁에 한 번 실행되도록 예약하고 PackageB를 실행하기위한 기존 작업이없는 경우에는 작성해야합니다.

내 감정에 의하면 TSQL을 사용하여이 작업을 수행 할 수 있어야한다고 생각합니다. 어떤 제안이나 TSQL을 사용하는 것보다 더 나은 방법이 있습니까?

나를 생각하면 고맙습니다.

답변

1

당신은 PackageAPackageB 또는 시간을 확인 19:00까지 대기 할 WAITFOR 문을 사용하여 SSIS에서 SQL 실행 태스크 사이에 T-SQL 작업 단계를 구현할 수 있습니다.

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

아주 좋은 생각입니다. 월요일에 테스트 할 것입니다. – Henrov