2011-03-29 7 views
12

내 Foreach 루프의 폴더를 가변 위치로 설정해야합니다. 필자는 패키지 구성에 위치를 추가하려고 시도했지만 작동 한 것처럼 작동했지만 구성 파일을 열었을 때 그 위치에 없었습니다.SSIS Foreach 루프 폴더를 변수로 사용

경로를 하드 코드 한 Foreach File Enumerator로 설정하고 정규화 된 파일 이름을 검색했습니다. 내 변수 매핑에는 인덱스가 0 인 가변 CurrentFile이 있습니다.

그래서 \ File \ 변수에 SourceFiles 변수가있는 Foreach From Variable Enumerator로 변경했습니다. 그러나 이제는 CurrentFile에 대해 할당 할 값의 유형이 변수 유형 (문자열)과 다르다고 불평합니다.

필자는 Collections 탭의 열거 자에서 Expressions를 사용해야 할 것으로 추측하고 있습니다. 방법?

  • 일반 : Foreach 루프 컨테이너
  • 컬렉션 :의 Foreach Varialbe 열거에서; 변수는 User :: SourcePath입니다. 식 (사용되지 않음)
  • 변수 매핑 : 변수 사용자 :: CurrentFile, 인덱스 0
  • 식 : (사용되지 않음)

오류 : 0xC001F009 myPackage에에서 : 값의 유형 변수에 할당되는 " User :: CurrentFile "은 현재 변수 유형과 다릅니다. 변수는 실행 중에 유형을 변경할 수 없습니다. 변수 유형은 Object 유형의 변수를 제외하고 엄격합니다. 오류 : ForeCache 루프 컨테이너에서 0xC001C012 : ForEach 변수 매핑 번호 1을 변수 "User :: CurrentFile"에 적용 할 수 없습니다.

답변

19

동료가 나에게 작업 방법을 보여 줬습니다. "Foreach File Enumerator"로 변경하지 말고 "Foreach File Enumerator"로 변경하십시오.

  • 수집 : Foreach File Enumerator; 열거 자 구성에서 폴더와 파일을 넣습니다. 표현식에서 디렉토리를 가리키는 사용자 변수로 디렉토리를 설정하십시오 (입력 한 폴더보다 우선합니다). FileSpec을 파일을 가리키는 사용자 변수로 설정하십시오 (입력 한 파일보다 우위에 있음).
Directory @[User::SourcePath] (value: \\server\directory) 
FileSpec @[User::CopyFileName] (value: *.*) 
  • 변수 매핑 : 변수 사용 : 현재 파일, 인덱스 0
  • 식 : (사용되지 않음)