0

SSIS에서 우선 순위 제약 조건을 설정하는 방법에 대한 질문이 있습니다. 계단식 우선 순위 제약 조건 SSIS

I 패키지에 다음과 같은 흐름이 있습니다

enter image description here

  • SQL 실행 작업은 다음 "데이터"라는 변수에
  • 을 저장 형식 '1111'의 문자열 값을 반환합니다
  • 그 중 중요한 것은 실행될 스크립트 작업을 제어하는 ​​것입니다. 예를 들어 값이 "1111"이면 모든 4 개의 스크립트가 실행됩니다. 값이 "1011"이면 스크립트 1,3,4가 실행됩니다 ... 그림을 얻으십시오
  • 모든 경우에 이전 스크립트에 DEPEND 스크립트가 있습니다.
  • 제약 조건은 다음과 같은 식으로 계산됩니다. 스크립트 2의 경우 SUBSTRING (@ [User :: data], 2,1) == "1"입니다.

문제 : 스크립트 중 하나가 실행되지 않으면 다음 하나도 실행되지 않습니다 (제약 조건이 평가되지 않았기 때문에). 예를 들어, data = "1011"의 경우 스크립트 2와 3은 실행되지 않습니다 ...

이 작업을 수행하는 더 좋은 방법을 알고 계십니까?

BIDS와 함께 SQL Server 2008 사용

+0

이것은 몇개의 다른 값을 가질 수 있는지에 달려 있지만,'SQL task' 바로 다음에'조건부 split'으로 할 수 있습니다. 그렇게 할 수 없다면 스크립트를 편집하여 값 1011이 스크립트 2에 도달 할 때 스크립트를 변환하지 않고 스크립트 3으로 전달하면됩니다. – DenStudent

+0

@DenStudent 조건부 분할은 "데이터 흐름"작업 요소이며 "제어 흐름"이 아닙니다. 최종 결과를 얻으려면 어떻게 생각하십니까?나는이 4 가지 스크립트 만 가지고있다. – dhuesca

답변

2

enter image description here

나는 그것이 나 표현의 제약 조건을 사용하지 않고 실행 안되는 경우 각 스크립트의 스크립트가 점검을 수정 말한다 자신의 방향에 대한 @Iamdave에 동의합니다.

그러나 누군가가 데이터 흐름 작업 또는이 작업을 여기에서 수행하기를 원할 수도 있으므로 SSIS 구성 요소를 사용하여 작업을 수행 할 수 있습니다. 문제는 조건부로 작업을 실행하려고하지만 해당 작업이 실행되는지 여부에 관계없이 조건부로 다른 작업을 실행하려고하는 것입니다. 각 스크립트 작업을 시퀀스 컨테이너에 배치하면 시퀀스 컨테이너 간의 우선 순위에 따라 이전 컨테이너가 실패하지 않거나 표현식이 제약 조건이 아닌 한 항상 다른 컨테이너가 실행됩니다. 하지만 컨테이너에 들어가면 조건부 우선 순위를 설정할 수 있어야합니다. 스크립트 태스크보다 먼저 더미 태스크를 추가하고 그 우선 순위에 제약 조건을 추가하면됩니다.

0

일부 조건부 코드를 스크립트에 추가하십시오.

스크립트 작업 일의 시작에서 예를 들어

:

if firstcharacter(Variable) = 1 
    do things 
else 
    do nothing 

그리고 스크립트 작업 2 : 단지

if secondcharacter(Variable) = 1 
    do things 
else 
    do nothing 

모든 데이터가 통과 있는지 확인 만 변형되는 변수의 올바른 문자가 충족되면

+0

나는 스크립트의 OP 사용으로 인해 최선의 해결책으로 이것을 설명 할 것이다. 그러나 스크립트 작업의 모든 것이 실제로 데이터 흐름 작업 인 경우이 작업은 예를 들어 작동하지 않습니다. – Matt

관련 문제