적용 대상:SQL Server
Azure SQL Managed Instance
복제 기능을 사용하는 애플리케이션을 개발하기 전에, 다음과 같은 일반적인 계획 단계를 따르세요:
복제 토폴로지를 정의합니다.
애플리케이션 기능을 정의합니다.
보안 계획.
개발 환경을 선택합니다.
적절한 복제 프로그래밍 인터페이스를 선택합니다.
이 글의 나머지 부분에서는 이러한 단계들을 더 자세히 설명합니다. 계획 과정을 설명하기 위해 예시를 포함합니다.
복제 토폴로지 정의
복제 프로그래밍의 첫 번째 단계는 애플리케이션의 복제 토폴로지를 정의하는 것입니다. 기존 복제 토폴로지를 사용하는 애플리케이션을 작성한다면, 예를 들어 클라이언트 애플리케이션이 기존 구독자의 데이터를 접근하는 경우에는 다음 단계로 넘어가세요.
참고 항목
경우에 따라 복제 토폴로지 배포가 애플리케이션의 유일한 목적이 되기도 합니다.
정의하는 복제 토폴로지는 다음을 비롯한 여러 요인에 따라 달라집니다.
복제된 데이터가 업데이트되어야 하는지, 그리고 누가 업데이트해야 하는지에 대해서요.
일관성, 자율성 및 대기 시간에 대한 데이터 배포가 필요합니다.
비즈니스 사용자, 기술 인프라, 네트워크 및 보안 및 데이터 특성을 포함한 복제 환경입니다.
복제 및 복제 옵션의 유형입니다.
복제 토폴로지 및 복제 유형에 맞게 조정하는 방법
Microsoft SQL Server 복제가 처음이라면 복제 유형을 참조하세요.
애플리케이션 기능 정의
복제 토폴로지를 정의한 후, 애플리케이션이 제공하는 기능을 결정하세요. 이러한 기능은 구독을 동기화하는 스크립트에서 복제를 구성하는 사용자 인터페이스를 사용하는 애플리케이션에 이르기까지 다양할 수 있습니다. 복제는 다음과 같은 일반 프로그래밍 작업을 지원합니다.
복제 설정
구독자 동기화
복제 토폴로지 유지 관리
복제 토폴로지 모니터링
복제 문제 해결.
복제 기능과 SQL Server가 제공하는 다른 기능을 결합하여 애플리케이션을 확장하는 것도 흔합니다. 다음 표에서는 복제 애플리케이션에서 제공할 수 있는 몇 가지 확장된 기능을 강조 표시합니다.
| 기능 | 예시 |
|---|---|
| SMO(SQL Server Management Objects)를 사용한 서버 관리 | 관리자가 복제 토폴로지에서 데이터베이스를 게시자로 연결하고 구성할 수 있도록 하는 애플리케이션입니다. |
| ADO.NET을 사용하여 데이터 액세스 | 사용자가 오프라인 상태에서 로컬 구독자 데이터베이스의 복제된 판매 데이터를 프로그래밍적으로 접근하고 변경할 수 있게 해주며, 버튼을 눌러 풀 구독을 연결하고 동기화할 수 있게 해주는 애플리케이션입니다. |
보안 계획
보안은 모든 애플리케이션에서 중요하며, 코드를 작성하기 전에 반드시 보안을 계획해야 합니다. 애플리케이션 보안은 데이터베이스 보안, 복제 보안 및 보안 코드 작성이라는 세 부분으로 나눌 수 있습니다.
다음 기사들은 보안에 관한 정보를 제공합니다:
개발 환경 선택
복제 애플리케이션을 개발할 때 이 세 가지 기본 개발 환경을 고려하세요. 각 개발 환경은 몇 가지 예외를 제외하고 동일한 복제 기능에 액세스할 수 있습니다. 다음 환경들에서 복제 애플리케이션을 개발할 수 있습니다.
관리 코드
.NET 프레임워크 프로그래밍과 .NET 공통 언어 런타임(CLR)의 이점을 활용한 객체지향 개발 환경입니다. 관리 코드는 .NET 개발 및 SQL Server 애플리케이션 모두에 권장되는 프로그래밍 환경입니다. 관리형 복제 인터페이스는 Transact-SQL을 알지 않고도 객체 지향 방식으로 복제 관리를 프로그래밍할 수 있게 해줍니다. 또한 스크립트에서 제공하지 않는 복제 에이전트를 실행할 때 콜백 기능도 제공합니다. 관리 코드는 재사용 가능한 구성 요소 및 사용자 인터페이스 애플리케이션을 개발하기에 가장 적합한 환경입니다.
스크립팅
Transact-SQL 스크립트의 복제 시스템 저장 프로시저 또는 일괄 처리 파일의 명령으로 일련의 명령을 실행하는 간단한 애플리케이션입니다. 관리형 환경에서 SQL Server의 프로세스 내 관리 제공자를 사용해 스크립트를 실행할 수 있지만, 콜백 기능도 제공하는 관리형 복제 인터페이스를 사용해 동일한 기능을 얻을 수 있습니다. 스크립팅은 몇 번만 실행되고 콜백 기능이 필요하지 않은 작업을 실행하는 데 가장 적합한 환경입니다. 예를 들어 복제 서버 설치와 같은 경우입니다.
네이티브 코드
시스템 또는 COM 객체에 직접 접근하여 CLR에서 코드를 관리하지 않는 객체지향 개발 환경입니다. 네이티브 코드 복제 인터페이스는 더 이상 사용되지 않거나 중단됩니다. 자세한 내용은 SQL Server 복제 또는 복제 이전 버전과의 호환성에서 사용되지 않는 기능을 참조하세요.
적절한 복제 프로그래밍 인터페이스를 선택하세요
최종 계획 단계는 선택한 개발 환경에 대해 원하는 복제 기능을 구현하는 적절한 복제 프로그래밍 인터페이스를 선택하는 것입니다. 다음 표는 사용 가능한 복제 프로그래밍 인터페이스를 보여줍니다.
| 인터페이스 | Environment | 사용 |
|---|---|---|
| 복제 관리 개체 개념 | 관리 코드 | 관리, 모니터링 및 동기화. |
| Microsoft.SqlServer.Replication | 관리 코드 | 동기화. |
| Microsoft.SqlServer.Replication.BusinessLogicSupport | 관리 코드 | 사용자 지정 논리를 병합 동기화 프로세스에 통합하기 위한 비즈니스 논리 처리기 생성 |
| 복제 저장 프로시저(Transact-SQL) | 스크립팅 | 관리 및 모니터링. |
| 복제 에이전트 실행 파일 개념 | 스크립팅 | 동기화. |
예시
Adventure Works에서는 전 세계 200명의 영업 담당자를 위한 데이터를 게시해야 합니다. 영업 사원들은 자주 출장을 다니기 때문에 고객 데이터를 변경하고 새 주문을 추가하기 위해 노트북 컴퓨터나 개인 디지털 비서(PDA)를 사용해야 합니다. 영업 담당자는 노트북을 네트워크에 연결할 때 변경 사항을 Publisher와 동기화해야 합니다.
이 애플리케이션의 경우 계획 단계는 다음과 같을 수 있습니다.
이 애플리케이션에 대한 복제 토폴로지가 이미 있습니다. 하지만 클라이언트에서 새로운 풀 구독을 만들어야 합니다. 출판물 내 매개변수화된 필터를 사용하여 각 영업 담당자에게 고유한 데이터 세트를 복제하세요.
이 애플리케이션은 판매 애플리케이션에 필요한 일반적인 데이터 액세스 외에도 영업 사원이 단추를 클릭하여 요청 시 끌어오기 구독을 동기화할 수 있도록 해야 합니다. 영업 담당자가 애플리케이션을 설치하고 실행하기 때문에, 구독을 구성하고 클라이언트에서 초기 스냅샷을 적용할 수 있어야 합니다. 선택적으로, 애플리케이션은 Windows가 제공하는 무선 연결 감지 인프라를 사용하여 연결이 감지되면 자동으로 구독을 동기화합니다.
복제 시 모든 보안 지침을 준수하며, Publisher에 연결할 때 Windows 인증과 가상 사설망(VPN) 사용을 포함해 주의하세요. 웹 동기화를 구현할 경우, 이전에는 보안 소켓 계층(SSL)으로 알려진 전송 계층 보안(TLS) 연결을 사용하세요. 자세한 내용은 Configure Web Synchronization을 참조하세요.
.NET 프레임워크의 기능을 활용하려면 관리형 코드 언어를 사용하여 애플리케이션을 개발하세요.
이러한 요구 사항에 따라 RMO(복제 관리 개체) 관리 인터페이스는 이 애플리케이션에 필요한 모든 복제 기능을 제공할 수 있습니다.
이 예제 시나리오를 구현하는 AdventureWorks 샘플 애플리케이션을 SQL Server에서 다운로드할 수 있습니다.