변경 내용 추적 설정 및 해제(SQL Server)Enable and Disable Change Tracking (SQL Server)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 데이터베이스 및 테이블에 변경 내용 추적을 사용하도록 설정하거나 사용하지 않도록 설정하는 방법에 대해 설명합니다.This topic describes how to enable and disable change tracking for a database and a table.

데이터베이스에 변경 내용 추적을 사용하도록 설정Enable Change Tracking for a Database

변경 내용 추적을 사용하기 전에 데이터베이스 수준에서 변경 내용 추적을 설정해야 합니다.Before you can use change tracking, you must enable change tracking at the database level. 다음 예에서는 ALTER DATABASE를 사용하여 변경 내용 추적을 사용하도록 설정하는 방법을 보여 줍니다.The following example shows how to enable change tracking by using ALTER DATABASE.

ALTER DATABASE AdventureWorks2012  
SET CHANGE_TRACKING = ON  
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)  

SQL Server Management StudioSQL Server Management Studio 데이터베이스 속성(변경 내용 추적 페이지) [Database Properties (ChangeTracking Page)](../../relational-databases/databases/database-properties-changetracking-page.md) 에 변경 내용을 설정할 수도 있습니다.You can also enable change tracking in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

변경 내용 추적을 설정할 때 CHANGE_RETENTION 및 AUTO_CLEANUP 옵션을 지정할 수 있으며, 변경 내용 추적을 설정한 후 언제든지 이 값을 변경할 수 있습니다.You can specify the CHANGE_RETENTION and AUTO_CLEANUP options when you enable change tracking, and you can change the values at any time after change tracking is enabled.

변경 내용 보존 기간 값은 변경 내용 추적 정보가 유지되는 기간을 지정합니다.The change retention value specifies the time period for which change tracking information is kept. 이 기간보다 오래된 변경 내용 추적 정보는 정기적으로 제거됩니다.Change tracking information that is older than this time period is removed periodically. 이 값을 설정할 때 응용 프로그램이 이 데이터베이스에 있는 테이블을 동기화하는 빈도를 고려해야 합니다.When you are setting this value, you should consider how often applications will synchronize with the tables in the database. 지정한 보존 기간은 최대 동기화 간격 이상이어야 합니다.The specified retention period must be at least as long as the maximum time period between synchronizations. 응용 프로그램이 좀 더 긴 간격으로 변경 내용을 가져오면 일부 변경 내용 정보가 제거되지 않았을 수도 있으므로 반환되는 결과가 정확하지 않을 수 있습니다.If an application obtains changes at longer intervals, the results that are returned might be incorrect because some of the change information has probably been removed. 잘못된 결과가 생성되는 것을 방지하기 위해 응용 프로그램에서는 CHANGE_TRACKING_MIN_VALID_VERSION 시스템 함수를 사용하여 동기화 간의 간격이 너무 긴지 여부를 확인할 수 있습니다.To avoid obtaining incorrect results, an application can use the CHANGE_TRACKING_MIN_VALID_VERSION system function to determine whether the interval between synchronizations has been too long.

AUTO_CLEANUP 옵션을 사용하여 오래된 변경 내용 추적 정보를 제거하는 정리 태스크를 설정하거나 해제할 수 있습니다.You can use the AUTO_CLEANUP option to enable or disable the cleanup task that removes old change tracking information. 이 설정은 응용 프로그램이 동기화되지 않는 일시적인 문제가 발생하여 이 문제가 해결될 때까지 보존 기간보다 오래된 변경 내용 추적 정보를 제거하는 프로세스를 일시 중지해야 하는 경우에 유용합니다.This can be useful when there is a temporary problem that prevents applications from synchronizing and the process for removing change tracking information older than the retention period must be paused until the problem is resolved.

변경 내용 추적을 사용하는 데이터베이스의 경우 다음 사항에 주의하십시오.For any database that uses change tracking, be aware of the following:

  • 변경 내용 추적을 사용하려면 데이터베이스 호환성 수준이 90 이상으로 설정되어야 합니다.To use change tracking, the database compatibility level must be set to 90 or greater. 데이터베이스 호환성 수준이 90 미만인 경우에도 변경 내용 추적을 구성할 수 있지만If a database has a compatibility level of less than 90, you can configure change tracking. 변경 내용 추적 정보를 얻기 위해 사용되는 CHANGETABLE 함수에서 오류를 반환합니다.However, the CHANGETABLE function, which is used to obtain change tracking information, will return an error.

  • 스냅숏 격리를 사용하는 것은 모든 변경 내용 추적 정보가 일관되도록 보장하는 가장 쉬운 방법입니다.Using snapshot isolation is the easiest way for you to help ensure that all change tracking information is consistent. 이러한 이유로 데이터베이스에 대해 스냅숏 격리를 ON으로 설정하는 것이 가장 좋습니다.For this reason, we strongly recommend that snapshot isolation be set to ON for the database. 자세한 내용은 변경 내용 추적 사용(SQL Server)을 참조하세요.For more information, see Work with Change Tracking (SQL Server).

테이블에 변경 내용 추적을 사용하도록 설정Enable Change Tracking for a Table

추적하려는 테이블마다 변경 내용 추적을 설정해야 합니다.Change tracking must be enabled for each table that you want tracked. 변경 내용 추적이 설정되면 DML 작업에 의해 영향을 받는 테이블의 모든 행에 대해 변경 내용 추적 정보가 유지 관리됩니다.When change tracking is enabled, change tracking information is maintained for all rows in the table that are affected by a DML operation.

다음 예에서는 ALTER TABLE을 사용하여 테이블에 변경 내용 추적을 사용하도록 설정하는 방법을 보여 줍니다.The following example shows how to enable change tracking for a table by using ALTER TABLE.

ALTER TABLE Person.Contact  
ENABLE CHANGE_TRACKING  
WITH (TRACK_COLUMNS_UPDATED = ON)  

SQL Server Management StudioSQL Server Management Studio 데이터베이스 속성(변경 내용 추적 페이지) [Database Properties (ChangeTracking Page)](../../relational-databases/databases/database-properties-changetracking-page.md) 에 변경 내용을 설정할 수도 있습니다.You can also enable change tracking for a table in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

TRACK_COLUMNS_UPDATED 옵션이 ON으로 설정되면 SQL Server 데이터베이스 엔진SQL Server Database Engine 에서는 내부 변경 내용 추적 테이블에 업데이트된 열에 대한 추가 정보를 저장합니다.When the TRACK_COLUMNS_UPDATED option is set to ON, the SQL Server 데이터베이스 엔진SQL Server Database Engine stores extra information about which columns were updated to the internal change tracking table. 열 추적을 사용하면 응용 프로그램이 업데이트된 열만 동기화하도록 설정할 수 있습니다.Column tracking can enable an application to synchronize only those columns that were updated. 이로 인해 효율성과 성능이 향상될 수 있습니다.This can improve efficiency and performance. 그러나 열 추적 정보 유지 관리로 인해 저장소 오버헤드가 추가되기 때문에 이 옵션은 기본적으로 OFF로 설정됩니다.However, because maintaining column tracking information adds some extra storage overhead, this option is set to OFF by default.

데이터베이스 또는 테이블에 변경 내용 추적을 사용하지 않도록 설정Disable Change Tracking for a Database or Table

우선 변경 내용 추적이 설정된 모든 테이블에 대해 변경 내용 추적을 해제해야 해당 데이터베이스에 대한 변경 내용 추적을 OFF로 설정할 수 있습니다.Change tracking must first be disabled for all change-tracked tables before change tracking can be set to OFF for the database. 데이터베이스에서 변경 내용 추적이 설정된 테이블을 확인하려면 sys.change_tracking_tables 카탈로그 뷰를 사용합니다.To determine the tables that have change tracking enabled for a database, use the sys.change_tracking_tables catalog view.

데이터베이스의 테이블에 변경 내용 추적이 설정되어 있지 않으면 해당 데이터베이스에 대해 변경 내용 추적을 해제할 수 있습니다.When no tables in a database track changes, you can disable change tracking for the database. 다음 예에서는 ALTER DATABASE를 사용하여 데이터베이스에 변경 내용 추적을 사용하지 않도록 설정하는 방법을 보여 줍니다.The following example shows how to disable change tracking for a database by using ALTER DATABASE.

ALTER DATABASE AdventureWorks2012  
SET CHANGE_TRACKING = OFF  

다음 예에서는 ALTER TABLE을 사용하여 테이블에 변경 내용 추적을 사용하지 않도록 설정하는 방법을 보여 줍니다.The following example shows how to disable change tracking for a table by using ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

참고 항목See Also

데이터베이스 속성(변경 내용 추적 페이지) Database Properties (ChangeTracking Page)
ALTER DATABASE SET 옵션(Transact-SQL) ALTER DATABASE SET Options (Transact-SQL)
sys.change_tracking_databases(Transact-SQL) sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables(Transact-SQL) sys.change_tracking_tables (Transact-SQL)
데이터 변경 내용 추적(SQL Server) Track Data Changes (SQL Server)
변경 내용 추적 정보(SQL Server) About Change Tracking (SQL Server)
변경 데이터 작업(SQL Server) Work with Change Data (SQL Server)
변경 내용 추적 관리(SQL Server) Manage Change Tracking (SQL Server)