변경 데이터 캡처(CDC) 사용 설정

이 페이지에서는 SQL 서버용 Cloud SQL에서 변경 데이터 캡처(CDC)를 사용 설정하는 방법을 설명합니다. 이 기능은 인스턴스의 데이터베이스에 사용 가능합니다.

CDC를 사용 설정하면 다양한 유형의 변경사항을 캡처할 수 있습니다. CDC 사용 설정 및 사용 중지에 관한 자세한 내용은 Microsoft 문서를 참고하세요.

인스턴스에 연결하면 sqlserver 사용자가 다양한 CDC 작업을 수행할 수 있습니다.

데이터 변경 작업도 참조하세요.

시작하기 전에

인스턴스에 CDC를 구현하기 전에 이 페이지의 모든 정보를 검토합니다.

기능 제공 여부 확인

CDC는 다음 SQL 서버용 Cloud SQL 데이터베이스 버전에 사용 가능합니다.

  • SQL Server 2022 Standard
  • SQL Server 2022 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise
  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise

CDC 사용 설정 및 CDC 캡처 작업 시작

데이터베이스에는 sqlserver 사용자가 사용할 수 있도록 다음과 같이 저장된 절차가 있습니다.

  • msdb.dbo.gcloudsql_cdc_enable_db
  • msdb.dbo.gcloudsql_cdc_disable_db

CDC 사용 설정

데이터베이스에서 이 기능을 사용 설정하려면 필요한 저장 절차를 실행하고 데이터베이스 이름을 전달하세요. 예를 들면 다음과 같습니다.

EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'

CDC 사용 중지

데이터베이스에서 이 기능을 사용 중지하려면 다음과 같은 명령어를 실행합니다.

EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'

CDC 캡처 작업 시작

CDC가 사용 설정되면 캡처 및 정리를 위한 작업이 생성됩니다. SQL Server Management Studio(SSMS)에서는 sqlserver 사용자에게 작업이 표시되지 않습니다. 하지만 내장 저장 절차를 사용하여 작업을 수정할 수 있습니다. 또한 다음 저장 절차를 통해 작업을 볼 수 있습니다.

정리 작업을 시작하려면 다음 명령어를 사용하면 됩니다.

EXEC sys.sp_cdc_start_job @job_type = N'cleanup'

작업 매개변수를 변경하려면 다음과 같은 명령어를 사용할 수 있습니다.

EXEC sys.sp_cdc_change_job  @job_type = N'capture',
        @maxtrans = 20,
        @pollinginterval = NULL,
        @maxscans = NULL,
        @continuous = NULL

작업 시작 및 변경에 대한 상세 설명은 다음을 참조하세요.

sys.sp_cdc_add_job도 참조하세요.

테이블에서 CDC 사용 설정

데이터베이스에서 CDC를 사용 설정하면 dbo(데이터베이스 소유자) 액세스 권한이 있는 모든 사용자가 데이터베이스의 테이블에 대한 추적을 설정할 수 있습니다.

표준 CDC 명령어 및 옵션에 대한 상세 설명은 변경 데이터 캡처 사용 설정 및 사용 중지를 참조하세요.

테이블에서 변경사항 추적

테이블을 추적하려면 sys.sp_cdc_enable_table 저장 절차를 사용합니다.

예를 들어 다음과 유사한 명령어를 지정할 수 있습니다.

EXEC sys.sp_cdc_enable_table
  @source_schema = N'dbo',
  @source_name = N'customer',
  @role_name = N'CDC'

테이블에서 CDC가 사용 설정되었는지 확인

테이블에 CDC가 사용 설정되어 있는지 확인하려면 sys.sp_cdc_help_change_data_capture 저장 절차를 사용합니다.

예를 들어 다음과 유사한 명령어를 지정할 수 있습니다.

EXECUTE sys.sp_cdc_help_change_data_capture
  @source_schema = N'dbo',
  @source_name = N'customer'

CDC 변경 테이블을 통한 쿼리 변경사항

테이블의 CDC 변경사항을 보려면 테이블에서 CDC를 사용 설정할 때 자동으로 생성되는 테이블의 SELECT 쿼리를 사용하세요.

테이블 이름은 다음과 같습니다.

<schema>_<table_name>_CT

예를 들어 다음과 유사한 명령어를 지정할 수 있습니다.

SELECT * FROM cdc.dbo_customer_CT

캡처 인스턴스가 지정된 테이블에서 CDC 사용 설정

'캡처 인스턴스'로 테이블을 추적하려면 sys.sp_cdc_enable_table 저장 절차를 사용합니다.

예를 들어 다음과 유사한 명령어를 지정할 수 있습니다.

EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'customer',
    @role_name = N'CDC',
    @capture_instance = N'customer_cdc',
    @supports_net_changes = 1

캡처 인스턴스 내의 모든 변경사항 쿼리

'인스턴스 캡처' 내의 테이블에서 수행된 CDC 변경사항을 보려면 cdc.fn_cdc_get_all_changes_<capture_instance> 저장 절차를 사용합니다.

예를 들어 다음과 비슷한 SQL 문을 지정할 수 있습니다.

DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn = sys.fn_cdc_get_min_lsn(N'customer_cdc')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_customer_cdc(@from_lsn, @to_lsn, N'all');

테이블에서 CDC 사용 중지

테이블의 CDC 추적을 중지하려면 sys.sp_cdc_disable_table 저장 프로시저를 사용합니다. 캡처 인스턴스를 지정하여 중지합니다. 또는 'all'로 캡처 인스턴스를 지정합니다.

예를 들어 다음과 유사한 명령어를 지정하여 테이블의 CDC를 중지할 수 있습니다.

EXEC sys.sp_cdc_disable_table
  @source_schema = N'dbo',
  @source_name = N'customer',
  @capture_instance = N'all'

CDC가 사용 설정된 데이터베이스 삭제

데이터베이스에 CDC가 사용 설정되어 있는데 이를 삭제하려고 하면 오류가 발생할 수 있습니다. 이러한 경우 데이터베이스에서 CDC를 중지한 다음 데이터베이스를 삭제합니다.

예를 들어 다음과 유사한 명령어를 지정하여 데이터베이스를 중지하고 삭제하면 됩니다.

EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
DROP DATABASE 'DATABASE_NAME'

연결이 열려 있어서 데이터베이스를 삭제할 수 없는 경우에는 다음 쿼리를 사용하여 연결을 확인합니다.

select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'

열려 있는 모든 연결을 닫습니다. 데이터베이스에서 CDC를 중지한 다음 데이터베이스를 삭제합니다.

CDC가 사용 설정된 데이터베이스 가져오기

CDC 사용 설정된 데이터베이스를 가져올 때 SQL 서버용 Cloud SQL은 KEEP_CDC 플래그를 사용 설정된 상태로 유지하며 기본 매개변수를 사용하여 캡처 및 삭제 작업을 자동으로 생성합니다.