RDS Custom for SQL Server에서 변경 데이터 캡처(CDC) 지원 - Amazon Relational Database Service

RDS Custom for SQL Server에서 변경 데이터 캡처(CDC) 지원

개요

RDS Custom for SQL Server는 변경 데이터 캡처(CDC)에 대한 기본 지원을 제공하므로 SQL Server 테이블에서 데이터 수정 사항을 추적하고 캡처할 수 있습니다. CDC는 후속 검색 및 분석을 위해 이러한 변경 사항에 대한 자세한 메타데이터를 저장합니다. CDC 기능에 대한 자세한 내용은 Microsoft 설명서의 Change data capture를 참조하세요.

SQL Server에서 CDC 작업을 수행하려면 sys.servers로컬 서버(server_id = 0인 로컬 서버)와 SERVERPROPERTY('ServerName') 식별자 간에 일치하는 값이 필요합니다. RDS Custom for SQL Server는 인스턴스의 수명 주기 동안 이 동기화를 자동으로 유지하여 유지 관리 또는 복구 작업 중에 호스트가 교체되더라도 지속적인 CDC 작동을 보장합니다.

중요

다중 AZ 인스턴스 장애 조치 후 SERVERPROPERTY('Servername') 함수는 네트워크/컴퓨터 이름의 변경 사항을 자동으로 반영합니다. 그러나 @@SERVERNAME 함수는 MSSQLSERVER 서비스가 다시 시작될 때까지 이전 서버 이름을 유지합니다. @@SERVERNAME 쿼리는 장애 조치 후 이전 서버 이름을 반환합니다. 장애 조치 후 정확한 서버 이름을 얻으려면 다음 SQL 쿼리를 사용하세요.

SELECT name FROM sys.servers WHERE server_id=0

이 쿼리는 서비스를 다시 시작할 필요 없이 최신 서버 이름 정보를 제공합니다.

리전 및 버전 사용 가능 여부

CDC 기능은 RDS Custom for SQL Server를 사용할 수 있는 모든 AWS 리전과 RDS Custom에서 지원하는 모든 SQL Server 버전에서 지원됩니다. RDS Custom for SQL Server가 지원되는 버전 및 리전에 대한 자세한 내용은 RDS Custom for SQL Server를 지원하는 리전 및 DB 엔진 섹션을 참조하세요.

요구 사항 및 제한 사항

RDS Custom for SQL Server에서 CDC를 구현할 때는 다음 주요 고려 사항에 유의하세요.

  • MS Replication과 같은 기능을 사용하도록 sys.servers에서 @@SERVERNAME 및/또는 로컬 서버를 수동으로 설정한 경우 sys.servers의 로컬 서버(server_id = 0이 있는 로컬 서버) 값이 *.rds.amazonaws.com 또는 *.awsrds.*.com과 일치하는 형식으로 설정했다면 RDS Custom for SQL Server는 SERVERPROPERTY('ServerName')와 일치하도록 수정을 시도하지 않습니다.

  • 원격 로그인 또는 연결된 서버가 이전 호스트 이름을 적극적으로 사용하는 동안에는 RDS가 sys.servers의 로컬 서버(server_id = 0가 있는 로컬 서버)를 새 호스트 이름으로 수정할 수 없습니다. 이 제한은 두 가지 시나리오에 적용됩니다.

    • 연결된 서버가 이전 호스트 이름과 연결된 원격 로그인을 사용하여 로컬 서버에 대한 연결을 설정하는 경우

    • RDS Custom for SQL Server 인스턴스가 게시자 또는 배포자 역할을 하고 이전 호스트 이름과 연결된 로그인을 구독자 인스턴스에 연결한 경우

문제 해결

이전 서버 이름과 연결된 원격 로그인 또는 연결된 로그인을 식별하려면 다음 쿼리를 사용하세요. 적절한 CDC 기능을 보장하려면 결과를 검증하고 이러한 로그인을 제거하세요.

SELECT * FROM sys.remote_logins WHERE server_id=0

or

select sss.srvname,ssp.name,srl.remote_name from sys.server_principals ssp inner join sys.remote_logins srl on srl.local_principal_id=ssp.principal_id inner join sys.sysservers sss on srl.server_id = sss.srvid where sss.srvname = @@SERVERNAME