변경 내용 추적 설정 및 해제(SQL Server)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이 항목에서는 데이터베이스 및 테이블에 대해 변경 내용 추적을 사용하거나 사용하지 않도록 설정하는 방법을 설명합니다.

데이터베이스에 변경 내용 추적을 사용하도록 설정

변경 내용 추적을 사용하기 전에 데이터베이스 수준에서 변경 내용 추적을 설정해야 합니다. 다음 예제에서는 ALTER DATABASE를 사용하여 변경 내용 추적을 사용하도록 설정하는 방법을 보여 줍니다.

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

Database Properties(ChangeTracking Page) 대화 상자를 사용하여 SQL Server Management Studio에서 변경 내용 추적을 활성화할 수도 있습니다. 메모리 최적화 테이블이 데이터베이스에 포함되어 있으면 SQL Server Management Studio에서 변경 내용 추적을 사용하도록 설정할 수 없습니다. 사용하도록 설정하려면 T-SQL을 사용합니다.

변경 내용 추적을 설정할 때 CHANGE_RETENTION 및 AUTO_CLEANUP 옵션을 지정할 수 있으며, 변경 내용 추적을 설정한 후 언제든지 이 값을 변경할 수 있습니다.

변경 보존 값은 변경 내용 추적 정보가 유지되는 기간을 지정합니다. 이 기간보다 오래된 변경 내용 추적 정보는 정기적으로 제거됩니다. 이 값을 설정할 때 애플리케이션이 이 데이터베이스에 있는 테이블을 동기화하는 빈도를 고려해야 합니다. 지정한 보존 기간은 최대 동기화 간격 이상이어야 합니다. 애플리케이션이 좀 더 긴 간격으로 변경 내용을 가져오면 일부 변경 내용 정보가 제거되지 않았을 수도 있으므로 반환되는 결과가 정확하지 않을 수 있습니다. 잘못된 결과가 생성되는 것을 방지하기 위해 애플리케이션에서는 CHANGE_TRACKING_MIN_VALID_VERSION 시스템 함수를 사용하여 동기화 간의 간격이 너무 긴지 여부를 확인할 수 있습니다.

AUTO_CLEANUP 옵션을 사용하여 오래된 변경 내용 추적 정보를 제거하는 정리 태스크를 설정하거나 해제할 수 있습니다. 이 설정은 애플리케이션이 동기화되지 않는 일시적인 문제가 발생하여 이 문제가 해결될 때까지 보존 기간보다 오래된 변경 내용 추적 정보를 제거하는 프로세스를 일시 중지해야 하는 경우에 유용합니다.

변경 내용 추적을 사용하는 데이터베이스의 경우 다음 사항에 유의하세요.

  • 변경 내용 추적을 사용하려면 데이터베이스 호환성 수준을 90 이상으로 설정해야 합니다. 데이터베이스의 호환성 수준이 90 미만인 경우 변경 내용 추적을 구성할 수 있습니다. 그러나 변경 내용 추적 정보를 가져오는 데 사용되는 CHANGETABLE 함수는 오류를 반환합니다.

  • 스냅샷 격리를 사용하는 것은 모든 변경 내용 추적 정보가 일관되도록 보장하는 가장 쉬운 방법입니다. 이러한 이유로 데이터베이스에 대해 스냅샷 격리를 ON으로 설정하는 것이 가장 좋습니다. 자세한 내용은 변경 내용 추적 작업(SQL Server)을 참조하세요.

테이블에 대한 변경 내용 추적 사용

추적하려는 각 테이블에 대해 변경 내용 추적을 사용하도록 설정해야 합니다. 변경 내용 추적이 설정되면 DML 작업에 의해 영향을 받는 테이블의 모든 행에 대해 변경 내용 추적 정보가 유지 관리됩니다.

다음 예제에서는 ALTER TABLE을 사용하여 테이블에 대한 변경 내용 추적을 사용하도록 설정하는 방법을 보여 줍니다.

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

Database Properties(ChangeTracking Page) 대화 상자를 사용하여 SQL Server Management Studio에서 테이블의 변경 내용 추적을 활성화할 수도 있습니다.

TRACK_COLUMNS_UPDATED 옵션을 ON으로 설정하면 SQL Server 데이터베이스 엔진은 내부 변경 내용 추적 테이블로 업데이트된 열에 대한 추가 정보를 저장합니다. 열 추적을 사용하면 애플리케이션이 업데이트된 열만 동기화하도록 설정할 수 있습니다. 이로 인해 효율성과 성능이 향상될 수 있습니다. 그러나 열 추적 정보를 유지 관리하면 스토리지 오버헤드가 추가되므로 이 옵션은 기본적으로 OFF로 설정됩니다.

테이블 또는 데이터베이스에 대한 변경 내용 추적 사용 안 함

우선 변경 내용 추적이 설정된 모든 테이블에 대해 변경 내용 추적을 해제해야 해당 데이터베이스에 대한 변경 내용 추적을 OFF로 설정할 수 있습니다. 데이터베이스에서 변경 내용 추적이 설정된 테이블을 확인하려면 sys.change_tracking_tables 카탈로그 뷰를 사용합니다.

다음 예제에서는 ALTER TABLE을 사용하여 테이블에 대한 변경 내용 추적을 사용하지 않도록 설정하는 방법을 보여 줍니다.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

데이터베이스의 테이블에 변경 내용 추적이 설정되어 있지 않으면 해당 데이터베이스에 대해 변경 내용 추적을 해제할 수 있습니다. 다음 예제에서는 ALTER DATABASE를 사용하여 데이터베이스에 대한 변경 내용 추적을 사용하지 않도록 설정하는 방법을 보여 줍니다.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = OFF  

참고 항목

데이터베이스 속성(ChangeTracking 페이지)
ALTER DATABASE SET 옵션(TRANSACT-SQL)
sys.change_tracking_databases(Transact-SQL)
sys.change_tracking_tables(Transact-SQL)
데이터 변경 내용 추적(SQL Server)
변경 내용 추적 정보(SQL Server)
변경 데이터 작업(SQL Server)
변경 내용 추적 관리(SQL Server)