대상에 변경 내용 적용Apply the Changes to the Destination

변경 데이터를 증분 로드하는 Integration ServicesIntegration Services 패키지의 데이터 흐름에서 세 번째이자 마지막 태스크는 대상에 변경 내용을 적용하는 것입니다.In the data flow of an Integration ServicesIntegration Services package that performs an incremental load of change data, the third and final task is to apply the changes to your destination. 삽입을 적용할 구성 요소, 업데이트를 적용할 구성 요소 및 삭제를 적용할 구성 요소가 필요합니다.You will need one component to apply inserts, one to apply updates, and one to apply deletes.

참고

변경 데이터를 증분 로드하는 패키지의 데이터 흐름을 디자인하는 두 번째 태스크는 삽입, 업데이트 및 삭제를 구분하는 것입니다.The second task in designing the data flow of a package that performs an incremental load of change data is to separate inserts, updates, and deletes. 이 구성 요소에 대한 자세한 내용은 삽입, 업데이트 및 삭제 처리를 참조하세요.For more information about this component, see Process Inserts, Updates, and Deletes. 변경 데이터를 증분 로드하는 패키지를 만드는 전체 프로세스에 대한 설명은 변경 데이터 캡처(SSIS)를 참조하세요.For a description of the overall process for creating a package that performs an incremental load of change data, see Change Data Capture (SSIS).

삽입 적용Applying Inserts

삽입을 적용하려면 새 행을 특수한 방식으로 처리할 필요가 없으므로 OLE DB 대상을 사용합니다.To apply inserts, you use an OLE DB destination because the new rows do not require any special handling.

OLE DB 대상을 사용하여 삽입을 처리하려면To process inserts by using an OLE DB Destination

  1. 데이터 흐름 탭에서 OLE DB 대상을 추가합니다.On the Data flow tab, add an OLE DB destination.

  2. 삽입을 포함하는 출력을 조건부 분할 변환에서 OLE DB 대상에 연결합니다.Connect the output that contains inserts from the Conditional Split transformation to the OLE DB destination.

  3. OLE DB 대상 편집기연결 관리자 페이지에서 다음 옵션을 선택합니다.In the OLE DB Destination Editor, on the Connection Manager page, select the following options:

    1. 대상 데이터베이스에 대한 OLE DB 연결 관리자를 선택하거나 만듭니다.Select or create an OLE DB Connection Manager for the destination database.

    2. 데이터 액세스 모드 옵션을 선택한 다음 대상 테이블을 선택하거나 대상 열을 포함하는 SQL 문을 입력합니다.Select a Data access mode option, and then select the destination table or enter a SQL statement that contains the destination columns.

  4. 편집기의 매핑 페이지에서 변경 데이터의 적절한 열을 대상 테이블에 매핑합니다.On the Mappings page of the editor, map the appropriate columns from the change data to the destination table.

업데이트 적용Applying Updates

업데이트를 적용하려면 OLE DB 명령 변환을 사용합니다.To apply updates, you use an OLE DB Command transformation. 매개 변수가 있는 UPDATE 문을 사용하여 새 열 값으로 한 번에 한 행을 업데이트해야 하기 때문에 이 변환을 사용합니다.You use this transformation because you have to use a parameterized UPDATE statement to update one row at a time with the new column values.

참고

대상 구성 요소를 사용하여 업데이트를 적용할 수도 있습니다.You can also use destination components to apply updates. 이 방법을 사용할 때는 대상 구성 요소를 사용하여 해당 용도로 만든 임시 테이블에 행을 저장합니다.When using this approach, you use the destination components to save the rows to temporary tables that you create for this purpose. 그런 다음 SQL 실행 태스크를 사용하여 임시 테이블의 대상에 대해 대량 업데이트 및 대량 삭제 작업을 수행합니다.Then, you use Execute SQL tasks to perform bulk update and bulk delete operations against the destination from the temporary tables.

OLE DB 명령 변환을 사용하여 업데이트를 처리하려면To process updates by using an OLE DB Command transformation

  1. 데이터 흐름 탭에서 OLE DB 명령 변환을 추가합니다.On the Data flow tab, add an OLE DB Command transformation.

  2. 업데이트를 포함하는 출력을 조건부 분할 변환에서 OLE DB 명령 변환에 연결합니다.Connect the output that contains updates from the Conditional Split transformation to the OLE DB Command transformation.

  3. 고급 OLE DB 명령 편집기연결 관리자 탭에서 대상 데이터베이스에 대한 OLE DB 연결 관리자를 선택하거나 만듭니다.In the Advanced Editor for OLE DB Command, on the Connection Manager tab, select or create an OLE DB Connection Manager for the destination database.

  4. 고급 OLE DB 명령 편집기구성 요소 속성 탭에 있는 SqlCommand에 매개 변수가 있는 UPDATE 문을 입력합니다.In the Advanced Editor for OLE DB Command, on the Component Properties tab, for SqlCommand, enter a parameterized UPDATE statement.

    예를 들어 Customer 테이블에 대한 UPDATE 문에는 다음 구문이 있을 수 있습니다.For example, an UPDATE statement for a Customer table might have the following syntax:

    update CDCSample.Customer  
    set TerritoryID  = ?,  
        CustomerType  = ?,  
        rowguid  = ?,  
        ModifiedDate  = ?  
    where CustomerID = ?  
    
  5. 편집기의 열 매핑 탭에서 변경 데이터의 적절한 열을 UPDATE 문의 매개 변수에 매핑합니다.On the Column Mappings tab of the editor, map the appropriate columns from the change data to the parameters in the UPDATE statement.

삭제 적용Applying Deletes

삭제를 적용하려면 OLE DB 명령 변환을 사용합니다.To apply deletes, you use an OLE DB Command transformation. 행을 고유하게 식별하는 열 값을 기반으로 한 번에 한 행을 삭제하는 매개 변수가 있는 DELETE 문을 사용해야 하기 때문에 이 변환을 사용합니다.You use this transformation because you have to use a parameterized DELETE statement that deletes a single row at a time based on the column value that uniquely identifies the row.

참고

대상 구성 요소를 사용하여 삭제를 적용할 수도 있습니다.You can also use destination components to apply deletes. 이 방법을 사용할 때는 대상 구성 요소를 사용하여 해당 용도로 만든 임시 테이블에 행을 저장합니다.When using this approach, you use the destination components to save the rows to temporary tables that you create for this purpose. 그런 다음 SQL 실행 태스크를 사용하여 임시 테이블의 대상에 대해 대량 업데이트 및 대량 삭제 작업을 수행합니다.Then, you use Execute SQL tasks to perform bulk update and bulk delete operations against the destination from the temporary tables.

OLE DB 명령 변환을 사용하여 삭제를 처리하려면To process deletes by using an OLE DB Command transformation

  1. 데이터 흐름 탭에서 데이터 흐름에 OLE DB 명령 변환을 추가합니다.On the Data flow tab, add an OLE DB Command transformation to the data flow.

  2. 삭제를 포함하는 출력을 조건부 분할 변환에서 OLE DB 명령 변환에 연결합니다.Connect the output that contains deletes from the Conditional Split transformation to the OLE DB Command transformation.

  3. 고급 편집기를 열어 변환을 구성합니다.Open the Advanced Editor to configure the transformation.

  4. 고급 OLE DB 명령 편집기연결 관리자 탭에서 대상 데이터베이스에 대한 OLE DB 연결 관리자를 선택하거나 만듭니다.In the Advanced Editor for OLE DB Command, on the Connection Manager tab, select or create an OLE DB Connection Manager for the destination database.

  5. 고급 OLE DB 명령 편집기에 있는 편집기의 구성 요소 속성 탭에서 SqlCommand에 매개 변수가 있는 DELETE 문을 입력합니다.In the Advanced Editor for OLE DB Command, on the Component Properties tab of the editor, for SqlCommand, enter a parameterized DELETE statement.

    예를 들어 Customer 테이블에 대한 DELETE 문에는 다음 구문이 있을 수 있습니다.For example, a DELETE statement for a Customer table might have the following syntax:

    delete from Customer where CustomerID = ?  
    
  6. 편집기의 열 매핑 탭에서 변경 데이터의 적절한 열을 DELETE 문의 매개 변수에 매핑합니다.On the Column Mappings tab of the editor, map the appropriate column from the change data to the parameter in the DELETE statement.

MERGE 기능을 사용하여 삽입 및 업데이트 최적화Optimizing Inserts and Updates by Using MERGE Functionality

Transact-SQL MERGE 키워드와 특정 변경 데이터 캡처 옵션을 함께 사용하여 삽입 및 업데이트 처리를 최적화할 수 있습니다.You can optimize the processing of inserts and updates by combining certain change data capture options with the use of the Transact-SQL MERGE keyword. MERGE 키워드에 대한 자세한 내용은 MERGE(Transact-SQL)를 참조하세요.For more information about the MERGE keyword, see MERGE (Transact-SQL).

변경 데이터를 검색하는 Transact-SQL 문에서 cdc.fn_cdc_get_net_changes_ 함수를 호출할 때 all with mergerow_filter_option 매개 변수의 값으로 지정할 수 있습니다.In the Transact-SQL statement that retrieves the change data, you can specify all with merge as the value of the row_filter_option parameter when you call the cdc.fn_cdc_get_net_changes_ function. 이 변경 데이터 캡처 함수는 삽입과 업데이트를 구분하는 데 필요한 추가 처리를 수행할 필요가 없을 때 보다 효율적으로 작동합니다.This change data capture function operates more efficiently when it does not have to perform the extra processing that is required to distinguish inserts from updates. all with merge 매개 변수 값을 지정할 때 변경 데이터의 __$operation 값은 삭제의 경우 1이고 삽입 또는 업데이트로 인한 변경의 경우 5입니다.When you specify the all with merge parameter value, the __$operation value of the change data is 1 for deletes or 5 for changes that were caused by inserts or updates. 변경 데이터를 검색하는 데 사용되는 Transact-SQL 함수에 대한 자세한 내용은 변경 데이터 검색 및 이해를 참조하세요. all with merge 매개 변수 값을 사용하여 변경 내용을 검색한 후 삭제를 적용하고 나머지 행을 임시 테이블 또는 준비 테이블에 출력할 수 있습니다.For more information about the Transact-SQL function that is used to retrieve the change data, see Retrieve and Understand the Change Data.After retrieving changes with the all with merge parameter value, you can apply deletes, and output the remaining rows to a temporary table or a staging table. 그런 다음 다운스트림 SQL 실행 태스크에서 단일 MERGE 문을 사용하여 준비 테이블의 모든 삽입 또는 업데이트를 대상에 적용할 수 있습니다.Then, in a downstream Execute SQL Task, you can use a single MERGE statement to apply all the inserts or updates from the staging table to the destination.