이 페이지에서는 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 플래그를 사용 설정된 상태로 유지하며 기본 매개변수를 사용하여 캡처 및 삭제 작업을 자동으로 생성합니다.