변경 데이터의 간격 지정Specify an Interval of Change Data

변경 데이터를 증분 로드하는 Integration ServicesIntegration Services 패키지의 제어 흐름에서 첫 번째 태스크는 변경 간격의 끝점을 계산하는 것입니다.In the control flow of an Integration ServicesIntegration Services package that performs an incremental load of change data, the first task is to calculate the endpoints of the change interval. 이러한 끝점은 datetime 값이며 패키지에서 나중에 사용하기 위해 패키지 변수에 저장됩니다.These endpoints are datetime values and will be stored in package variables for use later in the package.

참고

제어 흐름 디자인의 전체 프로세스에 대한 설명은 데이터 캡처 변경(SSIS)을 참조하세요.For a description of the overall process of designing the control flow, see Change Data Capture (SSIS).

끝점에 대한 패키지 변수 설정Set Up Package Variables for the Endpoints

SQL 실행 태스크를 구성하여 끝점을 계산하기 전에 끝점을 저장할 패키지 변수를 정의해야 합니다.Before configuring the Execute SQL task to calculate the endpoints, the package variables that will store the endpoints have to be defined.

패키지 변수를 설정하려면To set up package variables

  1. SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)에서 새 Integration ServicesIntegration Services 프로젝트를 엽니다.In SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT), open a new Integration ServicesIntegration Services project.

  2. 변수 창에서 다음 변수를 만듭니다.In the Variables window, create the following variables:

    1. 간격의 시작 지점을 보관할 datetime 데이터 형식의 변수를 만듭니다.Create a variable with the datetime data type to hold the starting point for the interval.

      이 예에서는 변수 이름으로 ExtractStartTime을 사용합니다.This example uses the variable name, ExtractStartTime.

    2. 간격의 끝 지점을 보관할 datetime 데이터 형식의 다른 변수를 만듭니다.Create another variable with the datetime data type to hold the ending point for the interval.

      이 예에서는 변수 이름으로 ExtractEndTime을 사용합니다.This example uses the variable name, ExtractEndTime.

    여러 자식 패키지를 실행하는 마스터 패키지에서 끝점을 계산하는 경우 부모 패키지 변수 구성을 사용하여 이러한 변수 값을 각 자식 패키지에 전달할 수 있습니다.If you calculate the endpoints in a master package that executes multiple child packages, you can use Parent Package Variable configurations to pass the values of these variables to each child package. 자세한 내용은 패키지 실행 태스크자식 패키지에서 변수 및 매개 변수의 값 사용을 참조하세요.For more information, see Execute Package Task and Use the Values of Variables and Parameters in a Child Package.

변경 데이터의 시작 지점 및 끝 지점 계산Calculate a Starting Point and an Ending Point for Change Data

간격 끝점에 대한 패키지 변수를 설정한 후 해당 끝점의 실제 값을 계산하고 이러한 값을 해당 패키지 변수에 매핑할 수 있습니다.After you set up the package variables for the interval endpoints, you can calculate the actual values for those endpoints and map those values to the corresponding package variables. 이러한 끝점은 datetime 값이므로 datetime 값을 계산하거나 사용할 수 있는 함수를 사용해야 합니다.Because those endpoints are datetime values, you will have to use functions that can calculate or work with datetime values. Integration ServicesIntegration Services 식 언어와 Transact-SQL 모두에 datetime 값을 사용하는 함수가 있습니다.Both the Integration ServicesIntegration Services expression language and Transact-SQL have functions that work with datetime values:

Integration ServicesIntegration Services datetime 값을 사용하는 식 언어의 함수Functions in the Integration ServicesIntegration Services expression language that work with datetime values

  • DATEDIFF(SSIS 식)DATEDIFF (SSIS Expression)

  • DATEPART(SSIS 식)DATEPART (SSIS Expression)

  • DAY(SSIS 식)DAY (SSIS Expression)

  • GETDATE(SSIS 식)GETDATE (SSIS Expression)

  • GETUTCDATE(SSIS 식)GETUTCDATE (SSIS Expression)

  • MONTH(SSIS 식)MONTH (SSIS Expression)

  • YEAR(SSIS 식)YEAR (SSIS Expression)

    datetime 값을 사용하는 Transact-SQL의 함수Functions in Transact-SQL that work with datetime values
    날짜 및 시간 데이터 형식 및 함수(Transact-SQL).Date and Time Data Types and Functions (Transact-SQL).

    이러한 datetime 함수 중 하나를 사용하여 끝점을 계산하기 전에 간격이 고정되어 있고 정기적으로 발생하는지 확인해야 합니다.Before you use any one of these datetime functions to calculate the endpoints, you have to determine whether the interval is fixed and occurs on a regular schedule. 일반적으로 원본 테이블에서 발생한 변경 내용을 정기적으로 대상 테이블에 적용합니다.Typically, you want to apply changes that have occurred in source tables to destination tables on a regular schedule. 예를 들어 이러한 변경 내용을 매시간, 매일 또는 매주 적용할 수 있습니다.For example, you might want to apply those changes on an hourly, daily, or weekly basis.

    변경 간격이 고정적인지, 아니면 보다 임의적인지 이해한 후 끝점을 계산할 수 있습니다.After you understand whether your change interval is fixed or is more random, you can calculate the endpoints:

  • 시작 날짜 및 시간 계산.Calculating the starting date and time. 이전 로드의 종료 날짜 및 시간을 현재 시작 날짜 및 시간으로 사용합니다.You use the ending date and time from the previous load as the current starting date and time. 증분 로드에 고정 간격을 사용하는 경우 Transact-SQL 또는 식 언어의 datetime Integration ServicesIntegration Services 함수를 사용하여 이 값을 계산할 수 있습니다.If you use a fixed interval for incremental loads, you can calculate this value by using the datetime functions of Transact-SQL or of the Integration ServicesIntegration Services expression language. 그렇지 않은 경우 실행 간 끝점을 유지하고 SQL 실행 태스크 또는 스크립트 태스크를 사용하여 이전 끝점을 로드해야 할 수 있습니다.Otherwise, you might have to persist the endpoints between executions, and use an Execute SQL task or a Script task to load the previous endpoint.

  • 종료 날짜 및 시간 계산.Calculating the ending date and time. 증분 로드에 고정 간격을 사용하는 경우 현재 종료 날짜 및 시간을 시작 날짜 및 시간의 오프셋으로 계산합니다.If you use a fixed interval for incremental loads, calculate the current ending date and time as an offset from the starting date and time. Transact-SQL 또는 식 언어의 datetime Integration ServicesIntegration Services 함수를 사용하여 이 값을 계산할 수도 있습니다.Again, you can calculate this value by using the datetime functions of Transact-SQL or of the Integration ServicesIntegration Services expression language.

    다음 절차에서는 변경 간격에 고정 간격을 사용하며 증분 로드 패키지가 예외 없이 매일 실행된다고 가정합니다.In the following procedure, the change interval uses a fixed interval and assumes that the incremental load package is run daily without exception. 그렇지 않으면 누락된 간격의 변경 데이터가 손실됩니다.Otherwise, change data for missed intervals would be lost. 간격의 시작 지점은 이틀 전 자정입니다. 즉, 24-48시간 전입니다.The starting point for the interval is midnight the day before yesterday, that is, between 24 and 48 hours ago. 간격의 끝 지점은 어제 자정입니다. 즉, 0-24시간 전의 전날 밤입니다.The ending point for the interval is midnight yesterday, that is, the previous night, between 0 and 24 hours ago.

캡처 간격의 시작 지점 및 끝 지점을 계산하려면To calculate the starting point and ending point for the capture interval

  1. 디자이너의 제어 흐름 SSISSSIS 탭에서 패키지에 SQL 실행 태스크를 추가합니다.On the Control Flow tab of SSISSSIS Designer, add an Execute SQL Task to the package.

  2. SQL 실행 태스크 편집기일반 페이지에서 다음 옵션을 선택합니다.Open the Execute SQL Task Editor, and on the General page of the editor, select the following options:

    1. ResultSet단일 행을 선택합니다.For ResultSet, select Single row.

    2. 원본 데이터베이스에 대한 올바른 연결을 구성합니다.Configure a valid connection to the source database.

    3. SQLSourceType직접 입력을 선택합니다.For SQLSourceType, select Direct input.

    4. SQLStatement에 다음 SQL 문을 입력합니다.For SQLStatement, enter the following SQL statement:

      SELECT DATEADD(dd,0, DATEDIFF(dd,0,GETDATE()-1)) AS ExtractStartTime,  
        DATEADD(dd,0, DATEDIFF(dd,0,GETDATE())) AS ExtractEndTime  
      
  3. SQL 실행 태스크 편집기결과 집합페이지에서 ExtractStartTime 결과를 ExtractStartTime 패키지 변수에 매핑하고 ExtractEndTime 결과를 ExtractEndTime 패키지 변수에 매핑합니다.On the Result Set page of the Execute SQL Task Editor, map the ExtractStartTime result to the ExtractStartTime package variable, and map the ExtractEndTime result to the ExtractEndTime package variable.

    참고

    식을 사용하여 Integration ServicesIntegration Services 변수의 값을 설정하면 변수의 값에 액세스할 때마다 식이 평가됩니다.When you use an expression to set the value of an Integration ServicesIntegration Services variable, the expression is evaluated every time that that the value of the variable is accessed.

다음 단계Next Step

변경 범위의 시작 지점 및 끝 지점을 계산한 후 다음 단계는 변경 데이터가 준비되었는지 여부를 확인하는 것입니다.After you calculate the starting point and ending point for a range of changes, the next step is to determine whether the change data is ready.

다음 항목: 변경 데이터의 준비 여부 확인Next topic: Determine Whether the Change Data Is Ready

관련 항목:See Also

패키지에서 변수 사용 Use Variables in Packages
Integration Services ( Ssis) 식 Integration Services (SSIS) Expressions
SQL 실행 태스크 Execute SQL Task
스크립트 태스크Script Task