2010-05-11 6 views
0

SSIS를 처음 사용하기 때문에 나와 함께하시기 바랍니다.두 개의 테이블을 SSIS와 하나의 대상 테이블로 결합

SQL Server 2008 용 Integration Services 프로젝트를 만들어 이전 데이터베이스의 데이터를 새 데이터베이스로 가져 왔습니다. 필자가해야 할 일 중 하나는 이전의 두 원본 테이블에서 하나의 새로운 대상 테이블로 데이터를 가져 오는 것입니다.

가장 좋은 방법은 무엇입니까?

tsql을 사용하여 간단한 내부 조인 쿼리로 원하는 결과를 쉽게 볼 수 있지만 SSIS 패키지를 사용하여 행운을 얻지는 못합니다. 내 OLE DB 원본 구성 요소 후 다음 단계 인 조회 구성 요소를 추가 내 첫 번째 소스 테이블

  • 에서 모든 열을 끌어

    1. 추가 OLE DB 원본 구성 요소 : 내 현재의 접근 방식은 세 단계로 진행됩니다. 이 쿼리에서는 두 번째 원본 테이블 'null을 반환하는 sql 쿼리의 결과 사용'을 선택한 다음 외부 키 ID를 '사용 가능한 입력 열'에서 사용 가능한 조회 열의 기본 키로 끕니다. 또한 '사용 가능한 입력 열'의 확인란을 선택하여 두 개의 열을 더 추가합니다.
    2. OLE DB 대상을 추가하고 대상 테이블을 가리 킵니다.

    이 프로세스는 조회 단계가 아니라 첫 번째 단계에서 실패하고 "조회 중 일치하는 행이 없습니다"라는 오류와 함께 실패합니다. 외래 키는 null이 될 수 없으며, 기본 키도 마찬가지 일 수 있습니다. 나는 단계에서 SQL 문을 사용하여 열에 null 날짜 값을 가져 오지 않았는지 확인할 수있었습니다 (몇 개가 있었음). 그러나 여전히 오류가 발생했습니다. 플랫 파일 대상에 첫 번째 단계 실패 경로를 출력하면 빈 CSV가 표시됩니다 (디버그 모드에서 ~ 600k 레코드가 플랫 파일로 이동하는 것을 관찰 함).

    나는이 시점에서 꽤 난처한 상태 다. 그리고 이것은 매우 쉬운 작업이어야하는 것처럼 보인다. 나는 답변을 위해 웹을 샅샅이 뒤졌으며, 정확히 같은 문제가있는 것처럼 들리는이 link을 발견했지만 캐시 설정을 변경하면 도움이되지 못했습니다.

    감사합니다.

  • 답변

    3

    조회에서 불일치가있는 것 같습니다. 나는 쿼리를 실행하고 그 둘 다 OLE DB SOURCE에 null foriegn 키가 있는지 확인합니다. 그리고 각각의 외래 키는 룩업 테이블의 어떤 것과 일치한다.

    여기에는 좀 더 간단한 방법이 있습니다. OLE DB SOURCE에서 언급 한 내부 조인 쿼리를 사용하십시오. 테이블 선택을 사용하지 말고 SQL 쿼리에 조인을 제공하십시오. 이렇게하면 SQL Server가 조인을 많이 수행하고 SSIS가 전송을 수행 할 수 있습니다.

    +0

    불일치가있는 것처럼 들린다는 것에 동의합니다 - 온라인으로 읽은 모든 도움은이를 가리키는 것처럼 보이지만 두 테이블 모두 (외래 키가있는 테이블과 기본 테이블이있는 테이블))는 int 데이터 유형이며 null을 허용하지 않습니다. 대체 방법에 대한 아이디어가 좋으므로 시도해 보았습니다. 나는 당신이 소스에서 SQL Command를 할 수 있었는지 전혀 몰랐다. 그러나 데이터 접근 모드 아래에있다. :) 도움을 많이 주셔서 감사합니다. 그것은 아름답게 작동했습니다! – Mario

    +0

    잘못된 점에 대해 더 자세히 알고 싶다면 제안이 있습니다. 찾아보기 태스크에서 실패한 행을 별도의 출력으로 구성 할 수 있습니다. LookUp Task에서 Error Output 구성을 선택하십시오. 오류 발생시 수행 할 작업을 선택하십시오. 다른 출력으로 리디렉션하거나 무시할 수 있습니다. 리디렉션하는 경우 텍스트 파일로 덤프하여 현재 상태를 확인하십시오. 또는이를 무시하고 대상 테이블에서 조회 데이터가 누락 된 행을 찾습니다. 행운을 빌어 요! –

    관련 문제