몇 가지 다른 것들 중에서 스크립트와 foreach 컨테이너를 사용하여 몇 개의 테이블을 업데이트하는 SSIS 패키지가 있습니다.SSIS에서 foreach 루프 컨테이너를 사용하여 다차원 배열을 반복 할 수 있습니까?
SELECT TOP 10 DirectoryID, DirectoryPath FROM ProjectDirectory ORDER BY LastAudit
및 다차원 배열 [10,2]에 추가 SqlDataReader
을 사용하고 있습니다 : 나는 foreach는 컨테이너 전에 스크립트 작업에서이 쿼리를 호출 할 SqlConnection
및 SqlCommand
을 사용하고 있습니다. 배열을 객체 변수 DirectoryList
에 할당하여 foreach 루프 컨테이너에서 반복 처리 할 수 있습니다. {{ "1", "C : \ Folder1"}, { "2", "C : \ Folder2"}와 같은 모양이어야합니다.
문제는 며칠 전이 소프트웨어를 사용하기 시작한 것이므로 foreach 루프 컨테이너가 DirectoryList
변수를 통해 반복되는 방식에 혼란 스럽습니다. 현재 컨테이너의 컬렉션 탭에서 Enumerator를 Forefach From Variable Enumerator로 설정하고 변수를 User::DirectoryList
으로 설정했습니다. 나는 변수 User::DirectoryID
을 인덱스 0으로 설정하고 User::DirectoryPath
을 인덱스 1로 설정했습니다. 각 루프에서 ID와 경로 변수가 "1"로 지정되도록 배열의 최상위 레벨을 통해 루프를 가져 오려고합니다. 및 "C : \ Folder1"및 다음에 루프를 통과 할 때 "2"및 "C : \ Folder2"등이 할당됩니다. 경로를 사용하여 일부 정보를 찾는 스크립트 구성 요소가 있습니다. id를 사용하여 SQL 테이블의 올바른 행을 갱신하십시오.
디버깅하려면 첫 번째 반복의 ID와 경로 MessageBox.Show(Variables.DirectoryID + ", " + Variables.DirectoryPath)
을 표시하고 "8, 8"을 표시하고 있습니다. 8은 첫 번째로 표시되어야하는 행의 ID에 해당합니다. 다음 번에 실행하면 "C : \ Folder1, C : \ Folder1"라는 올바른 경로가 두 번 표시됩니다. 그래서 명백하게 변수 매핑이 작동하지 않습니다. 두 변수를 같은 인덱스에 매핑합니다. 어떤 경우에는 작동하지 않으므로 foreground 컨테이너에서 다차원 배열을 사용할 수 없거나 변수 계산자에서 Foreach를 선택해야합니다. 나는 아무것도 찾지 못했지만이 모든 것이 이해하기 힘들지 만 어떤 제안이 있겠습니까?
최고 감사해야합니다 루프 내부에, 그것은이다! 네가 말했듯이 SQL 대신 Execute SQL Task를 사용하는 것으로 끝났다. 실제로 모든 스크립트가 그랬기 때문이다. 이제는 다른 SQL 실행 태스크에 DateTime 변수를 전달하고 테이블의 한 행을 업데이트하는 방법을 파악하려고합니다. 나는 주위에 Google, 감사합니다! –