CDC 원본CDC Source

CDC 원본은 SQL Server 2017SQL Server 2017 변경 테이블에서 특정 범위의 변경 데이터를 읽고 변경 내용을 다른 SSIS 다운스트림 구성 요소로 배달합니다.The CDC source reads a range of change data from SQL Server 2017SQL Server 2017 change tables and delivers the changes downstream to other SSIS components.

CDC 원본이 읽는 변경 데이터의 범위를 CDC 처리 범위라고 합니다. 이 범위는 현재 데이터 흐름이 시작되기 전에 실행되는 CDC 제어 태스크에 의해 결정됩니다.The range of change data read by the CDC source is called the CDC Processing Range and is determine by the CDC Control task that is executed before the current data flow starts. CDC 처리 범위는 테이블 그룹의 CDC 처리 상태를 유지 관리하는 패키지 변수의 값에서 파생됩니다.The CDC Processing Range is derived from the value of a package variable that maintains the state of the CDC processing for a group of tables.

CDC 원본은 데이터베이스 테이블, 뷰 또는 SQL 문을 사용하여 SQL ServerSQL Server 데이터베이스에서 데이터를 추출합니다.The CDC source extracts data from a SQL ServerSQL Server database by using a database table, a view, or an SQL statement.

CDC 원본은 다음과 같은 구성을 사용합니다.The CDC source uses the following configurations:

  • SQL ServerSQL Server CDC 데이터베이스에 액세스하기 위한 SQL ServerSQL Server ADO.NET 연결 관리자A SQL ServerSQL Server ADO.NET connection manager to access the SQL ServerSQL Server CDC database. CDC 원본 연결 구성에 대한 자세한 내용은 CDC 원본 편집기(연결 관리자 페이지)를 참조하세요.For more information about configuring the CDC source connection, see CDC Source Editor (Connection Manager Page).

  • CDC용으로 설정된 테이블A table enabled for CDC.

  • 선택한 테이블에 대한 캡처 인스턴스의 이름(둘 이상이 있는 경우)The name of the capture instance of the selected table (if more-than-one exists).

  • 변경 처리 모드The change processing mode.

  • CDC 처리 범위 결정의 기준이 되는 CDC 상태 패키지 변수의 이름.The name of the CDC state package variable based on which the CDC Processing range is determined. CDC 원본은 해당 변수를 수정하지 않습니다.The CDC source does not modify that variable.

    CDC 원본에 의해 반환 되는 데이터에서 반환 하는 것과 같습니다는 SQL ServerSQL Server CDC 함수 cdc.fn_cdc_get_all_changes_<캡처 인스턴스 이름 > 또는 cdc.fn_cdc_get_net_changes_<캡처 인스턴스 이름 > (가능한 경우).The data returned by the CDC Source is the same as that returned by the SQL ServerSQL Server CDC functions cdc.fn_cdc_get_all_changes_<capture-instance-name> or cdc.fn_cdc_get_net_changes_<capture-instance-name> (when available). 현재 처리 범위가 테이블의 초기 로드와 겹칠 수 있는지 여부를 나타내는 __$initial_processing 열만 선택적으로 추가될 수 있습니다.The only optional addition is the column, __$initial_processing that indicates whether the current processing range can overlap with an initial load of the table. 초기 처리에 대한 자세한 내용은 CDC Control Task를 참조하십시오.For more information about initial processing, see CDC Control Task.

    CDC 원본에는 하나의 일반 출력과 하나의 오류 출력이 있습니다.The CDC source has one regular output and one error output.

오류 처리Error Handling

CDC 원본에는 하나의 오류 출력이 있습니다.The CDC source has an error output. 구성 요소 오류 출력에 다음과 같은 출력 열이 포함됩니다.The component error output includes the following output columns:

  • 오류 코드: 값은 항상 -1입니다.Error Code: The value is always -1.

  • 오류 열: 오류의 원인이 되는 원본 열입니다(변환 오류의 경우).Error Column: The source column causing the error (for conversion errors).

  • 오류 행 열: 오류의 원인이 되는 레코드 데이터입니다.Error Row Columns: The record data that causes the error.

    오류 동작 설정에 따라 CDC 원본은 추출 프로세스 중 발생하는 오류(데이터 변환, 잘림)를 오류 출력에 반환하는 작업을 지원합니다.Depending on the error behavior setting, the CDC source supports returning errors (data conversion, truncation) that occur during the extraction process in the error output.

데이터 형식 지원Data Type Support

Microsoft용 CDC 원본 구성 요소는 올바른 SSIS 데이터 형식에 매핑되는 모든 SQL ServerSQL Server 데이터 형식을 지원합니다.The CDC source component for Microsoft supports all SQL ServerSQL Server data types, which are mapped to the correct SSIS data types.

CDC 원본 문제 해결Troubleshooting the CDC Source

다음에는 CDC 원본 문제 해결에 대한 정보가 들어 있습니다.The following contains information on troubleshooting the CDC source.

이 스크립트를 사용하여 문제를 격리하고 SQL Server Management Studio에서 해당 문제를 재현할 수 있습니다.Use this script to isolate problems and reproduce them in SQL Server Management Studio

CDC 원본 작업은 CDC 원본을 호출하기 전에 실행되는 CDC 제어 태스크의 작업으로 제어됩니다.The CDC source operation is governed by the operation of the CDC Control task executed before invoking the CDC source. CDC 제어 태스크는 시작 및 끝 LSN을 포함하기 위해 CDC 상태 패키지 변수의 값을 준비합니다.The CDC Control task prepares the value of the CDC state package variable to contain the start and end LSNs. 이 태스크는 다음 스크립트에 해당하는 함수를 실행합니다.It performs function equivalent to the following script:

use <cdc-enabled-database-name>  
               declare @start_lsn binary(10), @end_lsn binary(10)  
               set @start_lsn = sys.fn_cdc_increment_lsn(  
                       convert(binary(10),'0x' + '<value-from-state-cs>', 1))  
               set @end_lsn =   
                       convert(binary(10),'0x' + '<value-from-state-ce>', 1)  
               select * from cdc.fn_cdc_get_net_changes_dbo_Table1(@start_lsn,  
@end_lsn, '<mode>')  

각 항목이 나타내는 의미는 다음과 같습니다.where:

  • <cdc-설정-데이터베이스-이름 >의 이름인는 SQL ServerSQL Server 변경 테이블이 포함 된 데이터베이스입니다.<cdc-enabled-database-name> is the name of the SQL ServerSQL Server database containing the change tables.

  • <값에서-e-c s >는 CDC 상태 변수 CS로 표시 된 값은 /<값에서-e-c s > / (CS는 의미 처리 범위 시작 현재)입니다.<value-from-state-cs> is the value that appears in the CDC state variable as CS/<value-from-state-cs>/ (CS stands for Current-processing-range-Start).

  • <값에서 상태 ce > CE로 CDC 상태 변수에 나타나는 값은 /<값에서-e-c s > / (CE는 의미 처리 범위 끝 현재)입니다.<value-from-state-ce> is the value that appears in the CDC state variable as CE/<value-from-state-cs>/ (CE stands for Current-processing-range-End).

  • <모드 >는 CDC 처리 모드입니다.<mode> are the CDC processing modes. 처리 모드에는 모두, 이전 값이 포함된 모두, , 업데이트 마스크를 사용한 순 변경 내용, 병합을 사용한 순 변경 내용중 하나의 값이 지정됩니다.The processing modes have one of the following values All, All with Old Values, Net, Net with Update Mask, Net with Merge.

    이 스크립트는 오류를 식별하고 재현하기가 쉬운 SQL Server Management StudioSQL Server Management Studio에서 문제를 재현하여 문제를 격리하는 데 도움이 됩니다.This script helps isolate problems by reproducing them in the SQL Server Management StudioSQL Server Management Studio, where it is easy to reproduce and identify errors.

SQL Server 오류 메시지SQL Server Error Message

SQL ServerSQL Server에서 다음 메시지가 반환될 수 있습니다.The following message may be returned by SQL ServerSQL Server:

프로시저 또는 함수 cdc.fn_cdc_get_net_changes_에 대 한 제공 된 인수 개수가 부족<... >.An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_net_changes_<..>.

이 오류는 인수가 누락되었음을 나타내지 않습니다.This error does not indicate that an argument is missing. 대신 CDC 상태 변수의 시작 또는 끝 LSN 값이 잘못되었음을 의미합니다.It means that the start or end LSN values in the CDC state variable are invalid.

CDC 원본 구성Configuring the CDC Source

SSIS 디자이너를 사용하거나 프로그래밍 방식으로 CDC 원본을 구성할 수 있습니다.You can configure the CDC source programmatically or through the SSIS Designer.

자세한 내용은 다음 항목 중 하나를 참조하십시오.For more information, see one of the following topics:

섹션 내용In This Section

CDC 원본 편집기(연결 관리자 페이지)CDC Source Editor (Connection Manager Page)

CDC 원본 편집기 대화 상자의 연결 관리자 페이지를 사용하여 CDC 원본이 변경 행을 읽어오는 SQL Server 2017SQL Server 2017 데이터베이스(CDC 데이터베이스)에 대한 ADO.NET 연결 관리자를 선택할 수 있습니다.Use the Connection Manager page of the CDC Source Editor dialog box to select the ADO.NET connection manager for the SQL Server 2017SQL Server 2017 database that the CDC source reads change rows from (the CDC database). CDC 데이터베이스를 선택한 후 데이터베이스에서 캡처된 테이블을 선택해야 합니다.Once the CDC database is selected you need to select a captured table in the database.

CDC 원본에 대한 자세한 내용은 CDC Source을 참조하십시오.For more information about the CDC source, see CDC Source.

작업 목록Task List

CDC 원본 편집기의 연결 관리자 페이지를 열려면To open the CDC Source Editor Connection Manager Page

  1. SQL Server Data ToolsSQL Server Data Tools에서 CDC 원본이 있는 SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) 패키지를 엽니다.In SQL Server Data ToolsSQL Server Data Tools, open the SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) package that has the CDC source.

  2. 데이터 흐름 탭에서 CDC 원본을 두 번 클릭합니다.On the Data Flow tab, double-click the CDC source.

  3. CDC 원본 편집기에서 연결 관리자를 클릭합니다.In the CDC Source Editor, click Connection Manager.

옵션Options

ADO.NET 연결 관리자ADO.NET connection manager
목록에서 기존 연결 관리자를 선택하거나 새로 만들기 를 클릭하여 새 연결을 만듭니다.Select an existing connection manager from the list, or click New to create a new connection. CDC에 사용할 수 있고 선택한 변경 테이블이 있는 SQL ServerSQL Server 데이터베이스에 연결해야 합니다.The connection must be to a SQL ServerSQL Server database that is enabled for CDC and where the selected change table is located.

새로 만들기New
새로 만들기를 클릭합니다.Click New. 새 연결 관리자를 만들 수 있는 ADO.NET 연결 관리자 편집기 구성 대화 상자가 열립니다.The Configure ADO.NET Connection Manager Editor dialog box opens where you can create a new connection manager

CDC 테이블CDC Table
처리하기 위해 읽고 다운스트림 SSIS 구성 요소에 제공하려는 캡처된 변경 내용이 포함된 CDC 원본 테이블을 선택합니다.Select the CDC source table that contains the captured changes that you want read and feed to downstream SSIS components for processing.

캡처 인스턴스Capture instance
읽을 CDC 테이블이 있는 CDC 캡처 인스턴스의 이름을 선택하거나 입력합니다.Select or type in the name of the CDC capture instance with the CDC table to be read.

캡처된 원본 테이블에는 스키마 변경을 통해 테이블 정의의 원활한 전환을 처리하도록 하나 또는 두 개의 캡처된 인스턴스가 포함되어 있을 수 있습니다.A captured source table can have one or two captured instances to handle seamless transitioning of table definition through schema changes. 캡처할 원본 테이블에 대해 두 개 이상의 캡처 인스턴스가 정의되어 있으면 여기에서 사용할 캡처 인스턴스를 선택합니다.If more than one capture instance is defined for the source table being captured, select the capture instance you want to use here. 테이블 [schema]에 대 한 기본 캡처 인스턴스 이름입니다. [table] <스키마 > <테이블 > 했지만 해당 사용 중인 실제 캡처 인스턴스 이름은 다를 수 있습니다.The default capture instance name for a table [schema].[table] is <schema><table> but that actual capture instance names in use may be different. 읽은 실제 테이블은 CDC 테이블인 cdc.< 캡처 인스턴스 > _CT합니다.The actual table that is read from is the CDC table cdc .<capture-instance>_CT.

CDC 처리 모드CDC Processing Mode
처리 요구를 처리할 최적의 처리 모드를 선택합니다.Select the processing mode that best handles your processing needs. 가능한 옵션은 아래와 같습니다.The possible options are:

  • 모두: 업데이트 전 값이 없는 현재 CDC 범위의 변경 내용을 반환합니다.All: Returns the changes in the current CDC range without the Before Update values.

  • 이전 값이 포함된 모두: 이전 값(업데이트 전)을 포함한 현재 CDC 처리 범위의 변경 내용을 반환합니다.All with old values: Returns the changes in the current CDC processing range including the old values (Before Update). 각 업데이트 작업에 대해 두 행이 있습니다. 이 중 한 행에는 업데이트 전 값이 포함되어 있고 다른 한 행에는 업데이트 후 값이 포함되어 있습니다.For each Update operation, there will be two rows, one with the before-update values and one with the after-update value.

  • 순 변경 내용: 현재 CDC 처리 범위에서 수정된 원본 행당 하나의 변경 행만 반환합니다.Net: Returns only one change row per source row modified in the current CDC processing range. 원본 행이 여러 번 업데이트된 경우에는 결합된 변경 내용이 생성됩니다. 예를 들어 삽입+업데이트는 단일 업데이트로 생성되고 업데이트+삭제는 단일 삭제로 생성됩니다.If a source row was updated multiple times, the combined change is produced (for example, insert+update is produced as a single update and update+delete is produced as a single delete). 순 변경 내용 처리 모드에서 작업할 경우 단일 원본 행이 두 개 이상의 출력에 나타나므로 변경 내용을 삭제, 삽입 및 업데이트 출력으로 분할하고 해당 출력을 병렬로 처리할 수 있습니다.When working in Net change processing mode, it is possible to split the changes to Delete, Insert and Update outputs and handle them in parallel because the single source row appears in more than one output.

  • 업데이트 마스크를 사용한 순:이 모드는 일반 Net 모드와 유사 하지만 이름 패턴이 인 부울 열도 추가 __ $<열 이름 >__Changed 행을 변경 하는 현재에서 변경 된 열을 나타내는입니다.Net with update mask: This mode is similar to the regular Net mode but it also adds boolean columns with the name pattern __$<column-name>__Changed that indicate changed columns in the current change row.

  • 병합을 사용한 순 변경 내용: 이 모드는 일반적인 순 변경 내용 모드와 비슷하지만 삽입 및 업데이트 작업을 사용할 경우 단일 병합 작업으로 병합됩니다(UPSERT).Net with merge: This mode is similar to the regular Net mode but with Insert and Update operations merged into a single Merge operation (UPSERT).

참고

모든 순 변경 내용 옵션의 경우 원본 테이블에 기본 키 또는 고유 인덱스가 있어야 합니다.For all Net change options, the source table must have a primary key or unique index. 기본 키 또는 고유 인덱스가 없는 테이블의 경우에는 모두 옵션을 사용해야 합니다.For tables without a primary key or unique indes, you must yse the All option.

CDC 상태를 포함하는 변수Variable containing the CDC state
현재 CDC 컨텍스트에 대한 CDC 상태를 유지 관리하는 SSIS 문자열 패키지 변수를 선택합니다.Select the SSIS string package variable that maintains the CDC state for the current CDC context. CDC 상태 변수에 대한 자세한 내용은 상태 변수 정의를 참조하세요.For more information about the CDC state variable, see Define a State Variable.

재처리 표시기 열 포함Include reprocessing indicator column
__$reprocessing이라는 특수 출력 열을 만들려면 이 확인란을 선택합니다.Select this check box to create a special output column called __$reprocessing.

CDC 처리 범위가 초기 처리 범위(초기 로드 기간에 해당하는 LSN의 범위)와 겹치거나 이전 실행의 오류 발생 후 CDC 처리 범위가 다시 처리되는 경우 이 열 값은 true 입니다.This column has a value of true when the CDC processing range overlaps with the initial processing range (the range of LSNs corresponding to the period of initial load) or when a CDC processing range is reprocessed following an error in a previous run. 이 표시기 열을 사용하면 변경 내용을 다시 처리할 때 SSIS 개발자가 오류를 다르게 처리할 수 있습니다. 예를 들어 존재하지 않는 행의 삭제와 중복 키에 대해 실패한 삽입과 같은 동작은 무시할 수 있습니다.This indicator column lets the SSIS developer handle errors differently when reprocessing changes (for example, actions such as a delete of a non-existing row and an insert that failed on a duplicate key can be ignored).

자세한 내용은 CDC Source Custom Properties을(를) 참조하세요.For more information, see CDC Source Custom Properties.

CDC 원본 편집기(열 페이지)CDC Source Editor (Columns Page)

CDC 원본 편집기 대화 상자의 페이지를 사용하여 출력 열을 각 외부(원본) 열에 매핑할 수 있습니다.Use the Columns page of the CDC Source Editor dialog box to map an output column to each external (source) column.

작업 목록Task List

CDC 원본 편집기의 열 페이지를 열려면To open the CDC Source Editor Columns Page

  1. SQL Server Data ToolsSQL Server Data Tools에서 CDC 원본이 있는 SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) 패키지를 엽니다.In SQL Server Data ToolsSQL Server Data Tools, open the SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) package that has the CDC source.

  2. 데이터 흐름 탭에서 CDC 원본을 두 번 클릭합니다.On the Data Flow tab, double-click the CDC source.

  3. CDC 원본 편집기에서 을 클릭합니다.In the CDC Source Editor, click Columns.

옵션Options

사용 가능한 외부 열Available External Columns
데이터 원본에서 사용 가능한 외부 열의 목록입니다.A list of available external columns in the data source. 이 테이블을 사용하여 열을 추가하거나 삭제할 수 없습니다.You cannot use this table to add or delete columns. 원본에서 사용할 열을 선택합니다.Select the columns to use in the source. 선택한 열이 선택 순서대로 외부 열 목록에 추가됩니다.The selected columns are added to the External Column list in the order they are selected.

외부 열External Column
CDC 원본의 데이터를 사용하는 구성 요소를 구성할 때 표시되는 순서로 된 외부(원본) 열의 뷰입니다.A view of the external (source) columns in the order that you see them when configuring components that consume data from the CDC source. 순서를 변경하려면 먼저 사용 가능한 열 목록에서 선택한 열을 지운 다음 목록에서 외부 열을 다른 순서로 선택합니다.To change this order, first clear the selected columns in the Available External Columns list, and then select external columns from the list in a different order. 선택한 열이 선택 순서대로 외부 열 목록에 추가됩니다.The selected columns are added to the External Column list in the order you select them.

출력 열Output Column
각 출력 열의 고유 이름을 입력합니다.Enter a unique name for each output column. 기본값은 선택한 외부(원본) 열의 이름이지만 설명이 포함된 고유 이름을 임의로 선택할 수 있습니다.The default is the name of the selected external (source) column, however you can choose any unique, descriptive name. 입력한 이름은 SSIS 디자이너에 표시됩니다.The name entered is displayed in the SSIS Designer.

CDC 원본 편집기(오류 출력 페이지)CDC Source Editor (Error Output Page)

CDC 원본 편집기 대화 상자의 오류 출력 페이지를 사용하여 오류 처리 옵션을 선택할 수 있습니다.Use the Error Output page of the CDC Source Editor dialog box to select error handling options.

작업 목록Task List

CDC 원본 편집기 오류 출력 페이지를 열려면To open the CDC Source Editor Error Output Page

  1. SQL Server Data ToolsSQL Server Data Tools에서 CDC 원본이 있는 SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) 패키지를 엽니다.In SQL Server Data ToolsSQL Server Data Tools, open the SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) package that has the CDC source.

  2. 데이터 흐름 탭에서 CDC 원본을 두 번 클릭합니다.On the Data Flow tab, double-click the CDC source.

  3. CDC 원본 편집기에서 오류 출력을 클릭합니다.In the CDC Source Editor, click Error Output.

옵션Options

입/출력Input/Output
데이터 원본의 이름을 표시합니다.View the name of the data source.

Column
CDC 원본 편집기 대화 상자의 연결 관리자 페이지에서 선택한 외부(원본) 열을 표시합니다.View the external (source) columns that you selected on the Connection Manager page of the CDC Source Editor dialog box.

오류Error
CDC 원본에서 흐름의 오류를 처리하는 방법을 선택합니다. 오류 무시, 행 리디렉션 또는 구성 요소 실패를 지정할 수 있습니다.Select how the CDC source should handle errors in a flow: ignore the failure, redirect the row, or fail the component.

잘림Truncation
CDC 원본에서 흐름의 잘림을 처리하는 방법을 선택합니다. 오류 무시, 행 리디렉션 또는 구성 요소 실패를 지정할 수 있습니다.Select how the CDC source should handle truncation in a flow: ignore the failure, redirect the row, or fail the component.

DescriptionDescription
사용되지 않습니다.Not used.

이 값을 선택한 셀에 설정Set this value to selected cells
오류나 잘림 발생 시 CDC 원본에서 선택한 모든 셀을 처리하는 방법을 선택합니다. 오류 무시, 행 리디렉션 또는 구성 요소 실패를 지정할 수 있습니다.Select how the CDC source handles all selected cells when an error or truncation occurs: ignore the failure, redirect the row, or fail the component.

적용Apply
선택한 셀에 오류 처리 옵션을 적용합니다.Apply the error handling options to the selected cells.

오류 처리 옵션Error Handling Options

다음 옵션을 사용하여 CDC 원본에서 오류 및 잘림을 처리하는 방법을 구성할 수 있습니다.You use the following options to configure how the CDC source handles errors and truncations.

구성 요소 실패Fail Component
오류 또는 잘림이 발생하면 데이터 흐름 태스크가 실패합니다.The Data Flow task fails when an error or a truncation occurs. 이것이 기본 동작입니다.This is the default behavior.

오류 무시Ignore Failure
오류 또는 잘림이 무시되고 데이터 행이 CDC 원본 출력으로 전달됩니다.The error or the truncation is ignored and the data row is directed to the CDC source output.

흐름 리디렉션Redirect Flow
오류 또는 잘림 데이터 행이 CDC 원본의 오류 출력으로 전달됩니다.The error or the truncation data row is directed to the error output of the CDC source. 이 경우에는 CDC 원본 오류 처리가 사용됩니다.In this case the CDC source error handling is used. 자세한 내용은 CDC Source을 참조하세요.For more information, see CDC Source.