여러 테이블의 증분 로드 수행Perform an Incremental Load of Multiple Tables

변경 데이터 캡처를 사용하여 증분 로드 개선항목의 다이어그램에서는 한 테이블에서만 증분 로드를 수행하는 기본 패키지를 보여 줍니다.In the topic, Improving Incremental Loads with Change Data Capture, the diagram illustrates a basic package that performs an incremental load on just one table. 그러나 한 테이블을 로드하는 작업은 여러 테이블을 증분 로드하는 작업만큼 일반적이지 않습니다.However, loading one table is not as common as having to perform an incremental load of multiple tables.

여러 테이블을 증분 로드할 때 일부 단계는 모든 테이블에 대해 한 번만 수행해야 하며 다른 단계는 각 원본 테이블에 대해 반복해야 합니다.When you perform an incremental load of multiple tables, some steps have to be performed once for all the tables, and other steps have to be repeated for each source table. Integration ServicesIntegration Services에서 이러한 단계를 구현하는 데에는 다음과 같은 여러 옵션이 있습니다.You have more than one option for implementing these steps in Integration ServicesIntegration Services:

  • 부모 패키지 및 자식 패키지 사용Use a parent package and child packages.

  • 단일 패키지에서 여러 데이터 흐름 태스크 사용Use multiple Data Flow tasks in a single package.

부모 패키지 및 여러 자식 패키지를 사용하여 여러 테이블 로드Loading Multiple Tables by Using a Parent Package and Multiple Child Packages

부모 패키지를 사용하여 한 번만 수행되어야 하는 단계를 수행할 수 있습니다.You can use a parent package to perform those steps that only have to be done once. 자식 패키지는 각 원본 테이블에 대해 수행되어야 하는 단계를 수행합니다.The child packages will perform those steps that have to be done for each source table.

한 번만 수행되어야 하는 단계를 수행하는 부모 패키지를 만들려면To create a parent package that performs those steps that only have to be done once

  1. 부모 패키지를 만듭니다.Create a parent package.

  2. 제어 흐름에서 SQL 실행 태스크나 Integration ServicesIntegration Services 식을 사용하여 끝점을 계산합니다.In the control flow, use an Execute SQL task or Integration ServicesIntegration Services expressions to calculate the endpoints.

    끝점을 계산하는 방법의 예는 변경 데이터의 간격 지정을 참조하세요.For an example of how to calculate endpoints, see Specify an Interval of Change Data.

  3. 필요한 경우 For 루프 컨테이너를 사용하여 선택한 기간에 대한 변경 데이터가 준비될 때까지 실행을 지연합니다.If needed, use a For Loop container to delay execution until change data for the selected period is ready.

    이러한 For 루프 컨테이너의 예는 변경 데이터의 준비 여부 확인을 참조하세요.For an example of such a For Loop container, see Determine Whether the Change Data Is Ready.

  4. 여러 패키지 실행 태스크를 사용하여 로드할 각 테이블에 대해 자식 패키지를 실행합니다.Use multiple Execute Package tasks to execute child packages for each table to be loaded. 부모 패키지 변수 구성을 사용하여 부모 패키지에서 계산된 끝점을 각 자식 패키지에 전달합니다.Pass the endpoints calculated in the parent package to each child package by using Parent Package Variable configurations.

    자세한 내용은 패키지 실행 태스크자식 패키지에서 변수 및 매개 변수의 값 사용을 참조하세요.For more information, see Execute Package Task and Use the Values of Variables and Parameters in a Child Package.

각 원본 테이블에 대해 수행되어야 하는 단계를 수행하는 자식 패키지를 만들려면To create child packages to perform those steps that have to be done for each source table

  1. 각 원본 테이블에 대해 자식 패키지를 만듭니다.For each source table, create a child package.

  2. 제어 흐름에서 스크립트 태스크나 SQL 실행 태스크를 사용하여 변경 내용을 쿼리하는 데 사용할 SQL 문을 조합합니다.In the control flow, use a Script task or an Execute SQL task to assemble the SQL statement that will be used to query for changes.

    쿼리를 조합하는 방법의 예는 변경 데이터에 대한 쿼리 준비를 참조하세요.For an example of how to assemble the query, see Prepare to Query for the Change Data.

  3. 각 자식 패키지에서 단일 데이터 흐름 태스크를 사용하여 변경 데이터를 로드하고 대상에 적용합니다.Use a single Data Flow task in each child package to load the change data and apply it to the destination. 다음 단계에 설명된 대로 데이터 흐름을 구성합니다.Configure the Data Flow as described in the following steps:

    1. 데이터 흐름에서 원본 구성 요소를 사용하여 선택한 끝점 범위에 포함되는 변경 테이블의 변경 내용을 쿼리합니다.In the data flow, use a source component to query the change tables for the changes that fall within the selected endpoints.

      변경 테이블을 쿼리하는 방법의 예는 변경 데이터 검색 및 이해를 참조하세요.For an example of how to query the change tables, see Retrieve and Understand the Change Data.

    2. 조건부 분할 변환을 사용하여 적절한 처리를 위해 삽입, 업데이트 및 삭제를 다른 출력으로 전송합니다.Use a Conditional Split transformation to direct inserts, updates, and deletes to different outputs for appropriate processing.

      이 변환을 구성하여 출력을 전송하는 방법의 예는 삽입, 업데이트 및 삭제 처리를 참조하세요.For an example of how to configure this transformation to direct output, see Process Inserts, Updates, and Deletes.

    3. 대상 구성 요소를 사용하여 대상에 삽입을 적용합니다.Use a destination component to apply the inserts to the destination. 또한 OLE DB 명령 변환에 매개 변수가 있는 UPDATE 및 DELETE 문을 사용하여 대상에 업데이트 및 삭제를 적용합니다.Use OLE DB Command transformations with parameterized UPDATE and DELETE statements to apply updates and deletes to the destination.

      이 변환을 사용하여 업데이트 및 삭제를 적용하는 방법의 예는 대상에 변경 내용 적용을 참조하세요.For an example of how to use this transformation to apply updates and deletes, see Apply the Changes to the Destination.

단일 패키지에서 여러 데이터 흐름 태스크를 사용하여 여러 테이블 로드Loading Multiple Tables by Using Multiple Data Flow Tasks in a Single Package

로드할 각 원본 테이블에 대한 별도의 데이터 흐름 태스크를 포함하는 단일 패키지를 사용할 수도 있습니다.Alternatively, you can use a single package that contains a separate Data Flow task for each source table to be loaded.

단일 패키지에서 여러 데이터 흐름 태스크를 사용하여 여러 테이블을 로드하려면To load multiple tables by using multiple Data Flow tasks in a single package

  1. 단일 패키지를 만듭니다.Create a single package.

  2. 제어 흐름에서 SQL 실행 태스크나 Integration ServicesIntegration Services 식을 사용하여 끝점을 계산합니다.In the control flow, use an Execute SQL Task or Integration ServicesIntegration Services expressions to calculate the endpoints.

    끝점을 계산하는 방법의 예는 변경 데이터의 간격 지정을 참조하세요.For an example of how to calculate endpoints, see Specify an Interval of Change Data.

  3. 필요한 경우 For 루프 컨테이너를 사용하여 선택한 간격에 대한 변경 데이터가 준비될 때까지 실행을 지연합니다.If needed, use a For Loop container to delay execution until the change data for the selected interval is ready.

    이러한 For 루프 컨테이너의 예는 변경 데이터의 준비 여부 확인을 참조하세요.For an example of such a For Loop container, see Determine Whether the Change Data Is Ready.

  4. 스크립트 태스크나 SQL 실행 태스크를 사용하여 변경 내용을 쿼리하는 데 사용할 SQL 문을 조합합니다.Use a Script task or an Execute SQL task to assemble the SQL statement that will be used to query for changes.

    쿼리를 조합하는 방법의 예는 변경 데이터에 대한 쿼리 준비를 참조하세요.For an example of how to assemble the query, see Prepare to Query for the Change Data.

  5. 여러 데이터 흐름 태스크를 사용하여 각 원본 테이블에서 변경 데이터를 로드하고 대상에 적용합니다.Use multiple Data Flow tasks to load the change data from each source table and apply it to the destination. 다음 단계에 설명된 대로 각 데이터 흐름 태스크를 구성합니다.Configure each Data Flow task as described in the following steps.

    1. 각 데이터 흐름에서 원본 구성 요소를 사용하여 선택한 끝점 범위에 포함되는 변경 테이블의 변경 내용을 쿼리합니다.In each data flow, use a source component to query the change tables for the changes that fall within the selected endpoints.

      변경 테이블을 쿼리하는 방법의 예는 변경 데이터 검색 및 이해를 참조하세요.For an example of how to query the change tables, see Retrieve and Understand the Change Data.

    2. 조건부 분할 변환을 사용하여 적절한 처리를 위해 삽입, 업데이트 및 삭제를 다른 출력으로 전송합니다.Use a Conditional Split transformation to direct inserts, updates, and deletes to different outputs for appropriate processing.

      이 변환을 구성하여 출력을 전송하는 방법의 예는 삽입, 업데이트 및 삭제 처리를 참조하세요.For an example of how to configure this transformation to direct output, see Process Inserts, Updates, and Deletes.

    3. 대상 구성 요소를 사용하여 대상에 삽입을 적용합니다.Use a destination component to apply the inserts to the destination. 또한 OLE DB 명령 변환에 매개 변수가 있는 UPDATE 및 DELETE 문을 사용하여 대상에 업데이트 및 삭제를 적용합니다.Use OLE DB Command transformations with parameterized UPDATE and DELETE statements to apply updates and deletes to the destination.

      이 변환을 사용하여 업데이트 및 삭제를 적용하는 방법의 예는 대상에 변경 내용 적용을 참조하세요.For an example of how to use this transformation to apply updates and deletes, see Apply the Changes to the Destination.