2016-08-29 1 views
2

자식 패키지의 변수 값을 부모 패키지로 가져와야합니다. 나는 이것을 작동시킬 수 없다.SSIS 2012에서 자식 패키지에서 부모 패키지로 변수 전달

패키지 구성을 사용하여 부모에서 자식으로 변수를 설정할 수 있지만 상위 변수에 하위 값을 가져 오는 방법을 찾을 수 없습니다. 나는 자식에서 부모로부터 값을 설정하는 데 사용했던 동일한 프로세스를 사용하여 시도했지만 작동하지 않습니다.

다른 주제의 게시 된 해결책으로 방금 문제를 해결하지 못했을 수도 있습니다. 게시물은 2013 년이었고 많은 일이 바뀌 었습니다. 지금 가능한지 (외부 테이블에 값을 저장하지 않고) 가능한지 확인하고 싶었습니다.

+1

(HTTP [프로젝트 배포 모델로 부모 자식 패키지에서 SSIS 2012 패스 값]의 사용 가능한 복제와 함께 제공되는 코드입니다. com/questions/20288766/ssis-2012-pass-values-from-child-package-to-parent-with-project-deployment-model) – mxix

+0

다른 주제의 게시 된 해결책으로 방금 언급 한 문제가 해결되지 않았습니다. 가능하지 않습니다. 게시물은 2013 년이었고 많은 일이 바뀌 었습니다. 지금 가능한지 (외부 테이블에 값을 저장하지 않고) 가능한지 확인하고 싶었습니다. – Brad

+2

다른 답변을 살펴보십시오. 정답은 직접 바인딩이 가능하지 않다는 것입니다. 하지만 방법이있을 것 같습니다;) [스크립트] (http://stackoverflow.com/a/24816078/3665707) 또는 [변수] (http://stackoverflow.com/a/23121337/3665707) – mxix

답변

3

이 하위 패키지는 많은 부분에서 사용 중이며 그 중 많은 부분이 설정하려고하는 상위 변수가 없을 것입니다 (상위 변수에는 존재하지 않을 것입니다). 위 게시물의 표준 스크립트는 작동하지 않습니다. 나는 간단한 반환 변수 값을 기대했다.

위의 포스트를 출발점으로 사용하여 부모 패키지에 설정하려고 시도한 변수가 먼저 존재하는지 확인하기 위해 C# 코드를 업데이트했습니다 (항상 존재하지 않기 때문에). 그렇다면 설정합니다 . // 유래 : 아래

내가

 // have to do this FIRST so you can access variable without passing it into the script task from SSIS tool box 
     // Populate collection of variables. 
     //This will include parent package variables. 
     Variables vars = null; 
     Dts.VariableDispenser.GetVariables(ref vars); 
 // checks if this variable exists, and if so then will set it to the value of the child variable 

     if (Dts.VariableDispenser.Contains("ParentVar") == true)    
     { 
      //MessageBox.Show("ParentVariableExists"); 

      // Lock the to and from variables. 
      // parent variable 
      Dts.VariableDispenser.LockForWrite("User::ParentVar"); 
      // child variable 
      Dts.VariableDispenser.LockForRead("User::ChildVar"); 

      // Apparently need to call GetVariables again after locking them. 
      // Not sure why - perhaps to get a clean post-lock set of values. 
      Dts.VariableDispenser.GetVariables(ref vars); 
      // parentvar = childvar 
      vars["User::ParentVar"].Value = vars["User::ChildVar"].Value; 

      vars.Unlock(); 

     } 
1

변수를 부모 패키지에 넣고 자식 패키지가이를 수정하도록 할 수 있습니다.

또 다른 확실한 방법은 하위 패키지의 테이블을 채우고 상위 패키지의 테이블을 읽는 것입니다.

+1

나는 그것을 시도 패키지 구성을 사용하여 부모 변수에서 자식 변수를 설정 한 것과 같은 방식으로 작동하지 않습니다. 자식 패키지에서 반환 할 때 부모 패키지의 값이 업데이트되지 않았습니다. – Brad