SSIS 2008 패키지 구성이 무시 됨


10

명령 줄에 / ConfigFile something.dtsConfig를 지정할 때 2005와 비교하여 2008 년 패키지 구성이 변경되면서 패키지에 정의 된 변수는 구성 파일의 설정을 사용하는 대신 디자인 타임 값을 유지합니다.

외부 구성 파일을 전혀 사용하지 않는 방법을 잘 모르겠습니다. 설정된 디자인 타임 구성 만 외부 파일의로드를 덮어 쓰 겠다는 기사를 읽었습니다. 이것은 변수를 빈 문자열로 변경할 수 있으며 덮어 쓰게됩니까? 변수를 완전히 삭제할 수 없습니다! 정수는 어떻습니까?

패키지의 패키지 구성을 사용하여 끄기에 관한 기사를 보았습니다.

SSIS 패키지 편집기 또는 XML 편집기를 사용하여 패키지의 구성 파일 경로를 변경할 수 있으며 해당 파일의 설정을 "마지막"(외부 / ConfigFile 옵션에 관계없이) 사용합니다. 패키지 변경. Test.dtsConfig 및 Production.dtsConfig가있는 하나의 패키지가 필요하며 패키지를 변경하지 않고 앞뒤로 교환 할 수 있습니다.

지금 권장되는 방법은 무엇입니까?


1
당신은 당신의 구호를 찾을 수 있습니다 여기 SQLServerCentral 포럼. 행동 변화의 일부 설명은 여기 - 패키지 구성에 대한 부분 동작 변경 관련.
Marian

내가 말하는 패키지 및 구성에 대한 아이디어를 얻으려면 구성 및 배치 , 테스트 패키지추가 정보 파일을 참조하십시오 .
Marian

답변:


10

BIDS에 의해 실행될 때 패키지는 먼저 구성 파일에서 변수 값을 가져오고 구성 파일이 존재하지 않는 경우에만 경고를 발생시키고 패키지에서 값을 가져옵니다.

이제 명령 행의 상황이 약간 다릅니다. 다음과 같은 상황이 발생할 수 있습니다.

  1. 구성 파일을 선택하지 않고 cmd 행에서 패키지를 실행하십시오.

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • 원본 구성 파일 (이름을 Prod로 지정)이 패키지의 메타 데이터에 정의 된 동일한 경로에 존재하지 않으면 패키지 내부의 값이 사용되며 구성 파일이 누락되었다는 경고 만 표시됩니다.
    • 원래 구성 파일이 존재하고 유효한 경우 구성 파일의 값이 사용됩니다 (내부 값은 무시 됨).
  2. 구성 파일을 선택하지 않고 호출에 변수를 설정하여 cmd 행에서 패키지를 실행하십시오.

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • 원래 구성 파일이 존재하지 않으면 값은 / SET 패키지 호출에서 가져옵니다.
    • 원래 구성 파일이 존재하면 구성 파일에서 값을 가져 와서 / SET도 무시됩니다 (위의 경우에만 사용됨).
  3. 새로운 설정 파일과 함께 cmd 줄에서 패키지를 실행하십시오 (DEV 대신 Prod라고 가정하십시오).

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • 새 구성 파일 (Dev) 파일이 존재하고 이전 파일 (Prod)이 없으면 해당 파일의 값이 사용됩니다.
    • Dev 및 Prod 구성 파일이 모두 존재하는 경우 Prod의 값만 사용됩니다 (명령 행 호출에 지정된 경우에도 DEV는 무시 됨).
  4. 호출에서 새 구성 파일과 SET 문을 사용하여 cmd 행에서 패키지를 실행하십시오.

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
    • 두 구성 파일이 모두 존재하면 Prod가 사용되며 다른 모든 파일은 무시되며 SET도 마찬가지입니다.
    • 구성 파일이 없으면 SET 값이 사용됩니다.

즉, 새 구성 파일을 사용하려면 이전 구성 파일의 이름을 바꾸거나 이전 파일을 / configFile로 호출해야합니다. 충분하지 않고 새 구성 파일을 재정의하려면 / SET 변수를 사용하십시오. 또는 구성 파일을 무시하고 배치 호출에서 / SET 문을 사용할 수 있습니다.

잘하면 그것은 당신의 가능성에 약간의 빛을 비출 것입니다.


따라서 큰 문제 중 하나 인 것처럼 개발중인 상자의 경로는 실행하는 동안 서버의 경로와 동일하므로 패키지의 구성 경로가 항상 유효합니다.
Cade Roux

따라서 Dev, Test 및 Prod가 있어야하고 패키지가 항상 Dev를 가리키고 내 서버에 Dev 구성이 없어야한다고 생각한 다음 서버에서 여러 구성을 만들고 다른 구성에 대해 실행할 수 있습니다. 패키지에서 개발자 구성을 찾을 수 없습니다. 따라서 Dev 구성을 사용하여 디버깅 할 수 있지만 dev 구성의 찾을 수 있기 때문에 dev 상자의 명령 줄에서 실행하는 데 문제가 있습니다.
Cade Roux

나는 이것이 실제보다 훨씬 복잡하다는 데 동의한다고 가정합니다. 2008 년으로 바뀌면서 새로운 기능 (리로딩)이 새로 생겼지 만 가장 일반적인 패키지 구성 사용 시나리오는 중단되었습니다.
Cade Roux

글쎄요, 예, 그게 생각보다 더 나쁘다는 데 동의합니다. 항상 원본 구성 파일의 이름을 바꾸는 것을 잊었 기 때문에 이것을 알아내는 데 많은 시간이 걸렸습니다. :-). SET, / configFile, 원래 구성, 내부 패키지 값 순서로 더 좋았습니다. 그것은 나에게 더 의미가 있었을 것입니다 ..
마리안

필자가 읽은 기사 중 실제로 액세스 할 수있는 원래 구성 파일이라고 말한 것은 많지 않으므로 많은 문제가 있습니다. 이제 이들이 SSIS 패키지 편집기를 게시 한 이유를 알기 때문에 BIDS를 열지 않고도 패키지 내에서 변경할 수 있습니다.
Cade Roux
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.