이 하위 패키지는 많은 부분에서 사용 중이며 그 중 많은 부분이 설정하려고하는 상위 변수가 없을 것입니다 (상위 변수에는 존재하지 않을 것입니다). 위 게시물의 표준 스크립트는 작동하지 않습니다. 나는 간단한 반환 변수 값을 기대했다.
위의 포스트를 출발점으로 사용하여 부모 패키지에 설정하려고 시도한 변수가 먼저 존재하는지 확인하기 위해 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();
}
(HTTP [프로젝트 배포 모델로 부모 자식 패키지에서 SSIS 2012 패스 값]의 사용 가능한 복제와 함께 제공되는 코드입니다. com/questions/20288766/ssis-2012-pass-values-from-child-package-to-parent-with-project-deployment-model) – mxix
다른 주제의 게시 된 해결책으로 방금 언급 한 문제가 해결되지 않았습니다. 가능하지 않습니다. 게시물은 2013 년이었고 많은 일이 바뀌 었습니다. 지금 가능한지 (외부 테이블에 값을 저장하지 않고) 가능한지 확인하고 싶었습니다. – Brad
다른 답변을 살펴보십시오. 정답은 직접 바인딩이 가능하지 않다는 것입니다. 하지만 방법이있을 것 같습니다;) [스크립트] (http://stackoverflow.com/a/24816078/3665707) 또는 [변수] (http://stackoverflow.com/a/23121337/3665707) – mxix