2010-05-28 5 views
1

두 OLE DB 원본 개체가있는 DataFlow 작업이 있습니다. 이것은 SSIS를 사용하여 달성하고자하는 SQL입니다.SSIS에서 데이터 흐름 태스크와의 비교를 기반으로 행을 삭제하는 방법은 무엇입니까?

Insert into server2.db.dbo.[table2] (...) 
Select col1, col2, col3 ... 
from Server1.db.dbo.[table1] where [table1.col1] not in 
(Select col5 from server2.db.dbo.[table2] Where ...) 

저는 SSIS를 처음 접했고이를 달성하는 방법을 잘 모르겠습니다. 데이터 흐름 작업을 사용하여 server1.db.dbo.table1의 데이터와 server2.db.dbo의 두 번째 소스를 채우는 것으로 생각했습니다. [table2] 다음에 조건부 검사를 삽입하기 전에 수행하십시오. server2.db.dbo에 저장하십시오. [table2]. 조건부 검사를하는 방법을 잘 모르겠습니다. 어떤 도움을 주셔서 감사합니다.

답변

1

조회가 좋지만 (일치하지 않는 행만 지정) 테이블에 데이터를 저장 한 다음 SQL 문과 마찬가지로 대상 서버의 SQL 작업에서 수행하는 것이 더 나을 때가 있습니다.

조회를 사용하는 경우 조회 작업의 설정에 따라 전체 집합을 캐시하므로주의해야합니다 (패키지를 초기화하는 데 시간이 오래 걸림). SSIS는 대/민감한 반면 SQL Server는 데이터 정렬 설정에 따라 달라집니다.

0

가장 간단한 방법은 oledb 원본 개체를 server1에서 select col1, col2, col3 ... from db.dbo.[table1]으로 유지하는 것입니다. 다음으로 데이터 흐름에서 server2의 조회를 SQL select col5 from db.dbo.[table2] where ...과 함께 배치합니다. 찾아보기에 대한 오류 조건 (대화 상자의 왼쪽 하단에있는 단추)을 설정하여 일치하지 않는 행을 리디렉션하십시오. 왼쪽의 col1에서 오른쪽의 col5로 드래그하여 col1과 col5 사이의 일치 조건 (대화 상자의 맨 위에있는 탭)을 설정합니다 (오른쪽에서이 경우 화살표가 그 사이에 나타납니다). 작업이 완료되면 OleDb 대상 개체를 놓고 조회의 오류 출력을이 개체의 입력으로 끕니다. server2.db.dbo. [table2]를 대상 테이블로 선택하고 행을 올바르게 매핑하십시오.

관련 문제