Azure Data Factory에서 변경 데이터 캡처 리소스 문제 해결
적용 대상: Azure Data Factory Azure Synapse Analytics
팁
기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!
이 문서에서는 Azure Data Factory의 변경 데이터 캡처 리소스와 관련된 일반적인 문제를 해결하는 방법에 대한 제안 사항을 제공합니다.
문제: 내 SQL 원본에서 네이티브 CDC를 사용하도록 설정하는 데 문제가 있습니다.
SQL 원본의 경우 두 가지 테이블 집합, 즉 네이티브 SQL CDC가 사용하도록 설정된 테이블과 시간 기반 증분 열이 있는 테이블을 사용할 수 있습니다.
SQL 데이터베이스의 특정 원본 테이블에 대한 네이티브 CDC를 구성하려면 다음 단계를 따릅니다.
ID가 기본 키인 다음 테이블이 있다고 가정해 보세요. 기본 키가 스키마에 있으면 기본적으로 support_net_changes가 true로 설정됩니다. 그렇지 않은 경우 쿼리 3의 스크립트를 사용하여 구성합니다.
쿼리 1
CREATE TABLE Persons (
ID int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Last_login DATETIME,
PRIMARY KEY (ID));
참고 항목
현재 ADF CDC 리소스는 삽입, 업데이트 및 삭제 작업에 대한 순 변경 내용만 로드합니다.
데이터베이스 수준에서 CDC를 사용하도록 설정하려면 다음 쿼리를 실행합니다.
쿼리 2
EXEC sys.sp_cdc_enable_db
테이블 수준에서 CDC를 사용하도록 설정하려면 다음 쿼리를 실행합니다.
쿼리 3
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo'
, @source_name = N'Persons'
, @role_name = N'cdc_admin'
, @supports_net_changes = 1
, @captured_column_list = N'ID';
문제: CDC 리소스 구성 프로세스에서 테이블을 선택할 수 없습니다.
SQL 원본에 net_changed가 사용하도록 설정된 SQL Server CDC가 없거나 시간 기반 증분 열이 없는 경우 원본의 테이블을 선택할 수 없습니다.
문제: 디버그 클러스터를 웜 풀에서 사용할 수 없습니다.
디버그 클러스터는 웜 풀에서 사용할 수 없습니다. 1분 이상 대기 시간이 발생합니다.
문제: 삭제 작업을 추적하는 데 문제가 있습니다.
현재 CDC 리소스는 Azure SQL Database 및 델타와 같은 싱크 형식에 대한 삭제 작업을 지원합니다. 열 매핑 페이지에서 이를 수행하려면 원본의 행이 싱크의 행과 일치하는지 확인하는 데 사용할 수 있는 keys 열을 선택합니다.
문제: 대상 SQL 테이블에 ID 열이 있으면 내 CDC 리소스가 실패합니다.
대상 싱크 테이블에 ID 열이 있는 경우 CDC를 실행하면 다음 오류가 발생합니다.
IDENTITY_INSERT가 OFF로 설정된 경우 'TableName' 테이블의 ID 열에 명시적 값을 삽입할 수 없습니다.
다음 쿼리를 실행하여 SQL 기반 대상에 ID 열이 있는지 확인합니다.
쿼리 4
SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'
이 사용자를 해결하려면 다음 단계 중 하나를 수행합니다.
- 데이터베이스 수준에서 다음 쿼리를 실행하여 IDENTITY_INSERT를 ON으로 설정하고 CDC 매퍼를 다시 실행합니다.
쿼리 5
SET IDENTITY_INSERT dbo.TableName ON;
(또는)
- 사용자는 삽입을 수행하는 동안 매핑에서 특정 ID 열을 제거할 수 있습니다.
문제: 자체 호스팅 통합 런타임을 사용하는 데 문제가 있습니다.
현재 자체 호스팅 통합 런타임은 CDC 리소스에서 지원되지 않습니다. 온-프레미스 원본에 연결하려는 경우 관리되는 가상 네트워크와 함께 Azure Integration Runtime을 사용합니다.