2016-09-01 2 views
0

SQL 2014 데이터베이스에서 느리게 변경되는 유형 1 테이블에 대해 ETL 프로세스를 구현하려고합니다. 로드는 서버에서 발생해야하며 링크 된 서버를 사용하지 않는 것이 좋습니다.SSIS를 사용하여 소스에서 삭제 된 행을 어떻게 처리합니까? 느린 변경 차원

SSIS에서이 작업을 수행 할 방법을 찾고 있었지만 비즈니스 키에 일치하는 행만 업데이트하거나 행을 업데이트 할 수 있다는 점을 제외하고는 천천히 변화하는 차원 마법사가 제대로 작동한다는 것을 발견했습니다. 레코드가 차원 테이블에 있지만 원본에서 삭제 된 경우 처리 할 수있는 위치를 찾지 못했습니다. 나는 이것들이 삭제되었는지 확인하고 싶다. 내가 놓친 게 있니? SSIS에서이 문제를 해결할 더 좋은 방법을 찾은 사람이 있습니까?

대상 서버의 다른 테이블에 모든 것을 덤프하고 TSQL 병합을 작성할 수 있다는 것을 알고 있지만 SSIS에서이 작업을 수행하는 간단한 방법이 있어야합니다.

+0

링크 된 서버의 사용에는 어떤 문제가 있습니까? – Anton

+1

SSIS를 오해 한 것입니다 ... 병합 프로세스에서 데이터를 테이블로 옮겨야합니다. SSIS에는 OUTPUT 자체가 없지만 "삭제 된"행을 표시하는 데 사용할 수있는 오류 처리 방법이 있습니다. 물론 단 하나의 단단한 TSQL MERGE도이를 수행 할 수 있지만 이종 테이블에 SSIS가 필요하다고 가정 할 수 있습니다 ... 삭제 된 행이 SSIS의 존재하지 않는 행이라는 것을 인식하십시오. 그러나 나쁜 행은 SSIS의 행입니다. –

+0

정보를 제공해 주셔서 감사합니다. TSQl 병합을 준비하는 것이 최선의 선택이 될 것이라고 생각합니다. 내가 연결된 서버를 사용하지 않으려 고 생각하는 몇 가지 이유가 있습니다. 예를 들어, 다른 개발자는 설정 한 방식으로 뭔가를 할 수 없으며 인증을 위해 SA를 넣는 것을 끝냅니다.)뿐만 아니라이 프로세스가 여러 서버로 이동하여 새로운 서버로 쉽게 이동할 수 있어야하고 SSIS의 패키지 구성으로 연결 문자열을 변경하는 것이 매우 간단하기 때문입니다. 물론 연결된 서버와 약간의 동적 SQL을 사용하여 수행 할 수 있습니다. – schiznig

답변

0

먼저 SSIS의 SCD 기능을 피할 것입니다. SSIS의 성능은 끔찍한 경향이 있습니다. 실제로 MS 인증 트레이너와 많은 경험을 가진 사람들이이를 피하도록했습니다. 아주 작은 차원에서는 괜찮습니다. 그러나 관리하기 어려워지는 경향이 있습니다. 어떤 상황에서는 사용할 수 있다고 생각하는 사람의 블로그 게시물 here이 있지만 업데이트 용 준비 테이블을 사용하는 것이 좋습니다.

SSIS에서이 작업을 수행하려는 경우 조회를 사용하여 삭제해야하는 행을 찾을 수 있습니다 (일치하지 않는 출력을 사용하여 원본에없는 행을 찾은 다음 OLE 그들을 삭제하는 DB 명령. 그러나 SSIS가 행을 고민하여 행을 수행 할 것이므로 단순히 데이터를 준비 영역으로 옮기고 TSQL에서이 작업을 수행하는 것에 대해 진지하게 생각해 보겠습니다. 소량의 데이터에서는 문제가 해결 될 수 있지만 SCD 도구와 마찬가지로 더 많은 양의 데이터를 처리하는 경우 (또는 앞으로 발생할 수 있음) 관리하기 어려울 수 있습니다.

모든 데이터를 준비 영역으로 이동하지 않으려면 SSIS를 사용하여 삭제가 필요한 행의 고유 ID 만 보유한 테이블을 작성한 다음 SQL 실행 태스크를 시작하십시오 Control Flow에서 한번에 모두 삭제할 수 있습니다.

+0

정보 주셔서 감사합니다. 이러한 조회 테이블의 대부분은 상당히 작 습니다만, 최대 5,000 행이 될 수도 있지만 준비 영역/TSQL 접근 방식이 가장 좋을 것으로 보입니다. 준비/TSQL 병합이 내가해야 할 일이 될 것이라고 의심했지만 SCD 변환을 보았을 때 SSIS에 마술 총알이 있는지 확인하고 싶었습니다. – schiznig

+0

@schiznig - 유감스럽게도 SSIS에는 가치가있는 것보다 정직하게 많은 문제가있는 많은 기능이 있습니다. 이 기능을 사용하여 연결된 서버를 피하고 구성을 관리하는 것이 옳습니다.이 영역이 빛나는 곳이지만 많은 작업과 변환이 여러면에서 최적이 아닙니다. 그리고 어떤 경우에는 SQL보다 더 사용하기가 더 복잡합니다! –