복제 프로그래밍 개념Replication Programming Concepts

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

복제 기능을 사용하는 응용 프로그램을 개발하려면 먼저 다음과 같은 일반적인 계획 단계를 따르는 것이 좋습니다.Before developing an application that uses replication functionalities, you should follow the following general planning steps:

  1. 복제 토폴로지를 정의합니다.Define your replication topology.

  2. 응용 프로그램 기능을 정의합니다.Define application functionality.

  3. 보안을 계획합니다.Plan for security.

  4. 개발 환경을 선택합니다.Choose a development environment.

  5. 적절한 복제 프로그래밍 인터페이스를 선택합니다.Choose the appropriate replication programming interface.

    이 항목의 나머지 부분에서는 이러한 단계를 좀 더 자세히 설명합니다.The rest of this topic describes these steps in more detail. 이 항목에는 계획 프로세스에 대한 이해를 돕기 위해 예가 포함되었습니다.To help illustrate the planning process, an example has been included.

복제 토폴로지 정의Defining the Replication Topology

복제 프로그래밍의 첫 번째 단계는 응용 프로그램의 복제 토폴로지를 정의하는 것입니다.The first step in programming replication is to define the replication topology for your application. 기존 구독자의 데이터에 액세스하는 클라이언트 응용 프로그램과 같이 기존의 복제 토폴로지를 사용할 응용 프로그램을 작성하는 경우에는 다음 단계로 진행하십시오.If you are writing an application that will use an existing replication topology, such as a client application that accesses data at an existing subscriber, you should move onto the next step.

참고

경우에 따라서는 응용 프로그램이 복제 토폴로지를 배포하는 용도로만 사용될 수 있습니다.In some cases, deploying the replication topology will be the sole purpose of the application.

복제 토폴로지 정의는 다음을 포함하여 여러 요인에 따라 달라질 수 있습니다.The replication topology that you define depends on many factors, including the following:

  • 복제된 데이터를 업데이트해야 하는지 여부 및 업데이트 수행자Whether or not replicated data needs to be updated, and by whom.

  • 일관성, 자율성 및 대기 시간 측면에서의 데이터 배포 요구 사항Your data distribution needs regarding consistency, autonomy, and latency.

  • 비즈니스 사용자, 기술 인프라, 네트워크와 보안, 데이터 특성 등을 포함한 복제 환경The replication environment, including business users, technical infrastructure, network and security, and data characteristics.

  • 복제 및 복제 옵션 유형The types of replication and replication options.

  • 복제 토폴로지 및 복제 토폴로지와 복제 유형의 관계The replication topologies and how they align with the types of replication.

    MicrosoftMicrosoft SQL ServerSQL Server 복제를 처음 사용하는 경우 복제 유형을 참조하세요.If you are new to MicrosoftMicrosoft SQL ServerSQL Server replication, see Types of Replication.

응용 프로그램 기능 정의Defining Application Functionality

복제 토폴로지를 정의한 후에는 응용 프로그램이 제공할 기능을 결정해야 합니다.Once the replication topology has been defined, you should decide on the functionalities that your application will offer. 이러한 기능은 구독을 동기화하는 스크립트부터 복제를 구성하는 사용자 인터페이스가 포함된 응용 프로그램에 이르기까지 다양합니다.These functionalities can range from a script that synchronizes a subscription to an application with a user interface to configure replication. 복제는 다음과 같은 일발적인 프로그래밍 태스크를 지원합니다.Replication supports the following general programming tasks:

  • 복제 설정Setting up replication.

  • 구독자 동기화Synchronizing Subscribers.

  • 복제 토폴로지 유지 관리Maintaining a replication topology.

  • 복제 토폴로지 모니터링Monitoring a replication topology.

  • 복제 문제 해결Troubleshooting replication.

    복제 기능을 SQL ServerSQL Server에서 제공하는 다른 기능과 결합하여 응용 프로그램을 확장하는 방법도 일반적으로 사용됩니다.It is also common extend your application by combining replication functionalities with other functionalities provided by SQL ServerSQL Server. 다음 표에서는 복제 응용 프로그램에 제공할 수 있는 몇 가지 확장 기능을 보여 줍니다.The following table highlights some extended functionalities that you might provide in your replication application.

기능Functionality 예제Example
SMO( SQL ServerSQL Server Management Objects)를 사용하여 서버 관리Server administration using SQL ServerSQL Server Management Objects (SMO) 관리자가 복제 토폴로지에 데이터베이스를 게시자로 연결하고 구성할 수 있는 응용 프로그램입니다.An application that enables an administrator to attach and configure a database as a Publisher in a replication topology.
ADO.NET을 사용하여 데이터 액세스Data access using ADO.NET 사용자가 오프라인 상태에서 프로그래밍 방식으로 로컬 구독자 데이터베이스의 복제된 판매 데이터에 액세스하고 데이터를 변경한 다음 단추를 클릭하여 다시 연결한 후 끌어오기 구독을 동기화할 수 있는 응용 프로그램입니다.An application that enables users to programmatically access and change replicated sales data in a local Subscriber database while offline and then connect and synchronize the pull subscription by clicking a button.

보안 계획Planning for Security

보안은 모든 응용 프로그램에서 중요하며 보안 계획은 코드 작성을 시작하기 전에 마쳐야 합니다.Security is important in any application, and planning for security should be completed before writing any code. 응용 프로그램 보안은 데이터베이스 보안, 복제 보안 및 보안 코드 작성이라는 세 부분으로 나눌 수 있습니다.Application security can be divided into three main parts: securing the database, securing replication, and writing secure code.

다음 항목에서는 보안에 대한 정보를 제공합니다.The following topics provide information on security:

개발 환경 선택Choosing a Development Environment

복제 응용 프로그램을 개발할 때는 세 가지 기본적인 개발 환경을 고려할 수 있습니다.When developing a replication application, there are three basic development environments to consider. 각 개발 환경에서는 동일한 복제 기능에 액세스할 수 있지만, 몇 가지 예외도 있습니다.Each development environment has access to the same replication functionalities with some exceptions. 복제 응용 프로그램은 다음과 같은 환경에서 개발할 수 있습니다.Replication applications can be developed in each of the following environments.

  • 관리 코드Managed code

    .NET Framework.NET Framework 프로그래밍과 .NET CLR(공용 언어 런타임)의 이점을 활용하는 개체 지향 개발 환경입니다.Object oriented development environment that leverages the benefits of the .NET Framework.NET Framework programming and the .NET common language runtime (CLR). 관리 코드는 .NET 개발 및 SQL ServerSQL Server 응용 프로그램 모두에 대해 권장되는 프로그래밍 환경입니다.Managed code is the recommended programming environment for both .NET development and SQL ServerSQL Server applications. 관리되는 복제 인터페이스를 사용하면 Transact-SQLTransact-SQL을 알지 못해도 개체 지향 방식으로 복제 관리 기능을 프로그래밍할 수 있으며 스크립트를 통해 사용할 수 없는 복제 에이전트를 실행할 때 몇 가지 콜백 기능이 제공됩니다.Managed replication interfaces enable the programming of replication administration in an object-oriented manner without having to know Transact-SQLTransact-SQL, and it also provides some callback functionalities when running replication agents that are not available from scripts. 관리 코드는 재사용 가능한 구성 요소와 사용자 인터페이스 응용 프로그램을 개발하기 위한 최상의 환경입니다.Managed code is the best environment for developing reusable components and user interface applications.

  • 스크립팅Scripting

    일련의 명령을 Transact-SQLTransact-SQL 스크립트의 복제 시스템 저장 프로시저로 실행하거나 배치 파일의 명령으로 실행하는 간단한 응용 프로그램입니다.Simple applications that execute a series of commands as either replication system stored procedures in Transact-SQLTransact-SQL scripts or commands in batch files. SQL ServerSQL Server 종속 프로세스 관리 공급자를 사용하여 관리되는 환경에서 스크립트를 실행할 수 있지만 콜백 기능을 제공하는 관리되는 복제 인터페이스를 사용하여 동일한 기능을 구현할 수 있습니다.While you can execute scripts in a managed environment using the SQL ServerSQL Server in-process managed provider, the same functionality can obtained by using managed replication interfaces, which also provide callback functionalities. 스크립팅은 복제 서버 설치와 같이 콜백 기능이 필요하지 않고 몇 번만 실행할 태스크를 실행하는 데 가장 적합한 환경입니다.Scripting is the best environment for executing tasks that will run only a few times and where callback functionalities are not required, such as installing a replication server.

  • 네이티브 코드Native code

    CLR에서 코드를 관리하지 못하도록 시스템 또는 COM 개체에 대한 직접 액세스를 사용하는 개체 지향 개발 환경입니다.Object-oriented development environment that utilizes direct access to the system or COM objects such that code is not managed by the CLR. 네이티브 코드 복제 인터페이스는 더 이상 사용되지 않거나 지원되지 않습니다.Native code replication interfaces are deprecated or discontinued. 자세한 내용은 SQL Server 복제에서 사용되지 않는 기능 또는 복제의 이전 버전과의 호환성을 참조하세요.For more information, see Deprecated Features in SQL Server Replication or Replication Backward Compatibility.

적절한 복제 프로그래밍 인터페이스 선택Choose the Appropriate Replication Programming Interface

계획 프로세스의 마지막 단계는 선택한 개발 환경에서 원하는 복제 기능을 구현하는 적절한 복제 프로그래밍 인터페이스를 선택하는 것입니다.The final planning step is choosing the appropriate replication programming interface that implements the desired replication functionality for the chosen development environment. 다음 표에서는 사용할 수 있는 복제 프로그래밍 인터페이스를 보여 줍니다.The following table shows the replication programming interfaces available.

인터페이스Interface 환경Environment 용도Uses
복제 관리 개체 개념Replication Management Objects Concepts 관리 코드Managed code 관리, 모니터링 및 동기화Administration, monitoring, and synchronization.
Microsoft.SqlServer.Replication 관리 코드Managed code 동기화Synchronization.
Microsoft.SqlServer.Replication.BusinessLogicSupport 관리 코드Managed code 사용자 지정 논리를 병합 동기화 프로세스에 통합하기 위한 비즈니스 논리 처리기 생성Creation of business logic handlers to integrate custom logic with the merge synchronization process.
복제 저장 프로시저(Transact-SQL)Replication Stored Procedures (Transact-SQL) 스크립팅Scripting 관리 및 모니터링Administration and monitoring.
복제 에이전트 실행 파일 개념Replication Agent Executables Concepts 스크립팅Scripting 동기화Synchronization.

예제Example

Adventure WorksAdventure Works에서는 전 세계 200명의 영업 담당자에게 데이터를 게시해야 합니다.At Adventure WorksAdventure Works, data needs to be published for 200 sales representatives around the world. 영업 담당자들은 자주 이동하기 때문에 랩톱 컴퓨터나 PDA(개인용 정보 단말기)를 사용하여 고객 데이터를 변경하고 새 주문을 추가해야 합니다.The sales representatives travel often and will need to use laptop computers or personal digital assistants (PDAs) to change customer data and add new orders. 변경 내용은 영업 담당자가 랩톱을 네트워크에 연결할 때 게시자에 동기화되어야 합니다.The changes will then need to be synchronized with the Publisher when the sales representative connects the laptop to the network.

이 응용 프로그램의 계획 단계는 다음과 같습니다.For this application, the planning steps might look like the following:

  1. 이 응용 프로그램의 복제 토폴로지는 이미 있지만The replication topology for this application already exists. 클라이언트에서 새 끌어오기 구독을 만들어야 합니다.However, a new pull subscription must be created at the client. 게시 작업에서는 매개 변수가 있는 필터를 사용하여 각 영업 담당자에게 고유한 데이터 집합을 복제해야 합니다.The publication should use parameterized filters to replicate a unique set of data to each sales representative.

  2. 영업 응용 프로그램에 필요한 일반적인 데이터 액세스 이외에 이 응용 프로그램에서는 영업 사원이 단추를 클릭하여 필요할 때 끌어오기 구독을 동기화할 수 있어야 합니다.In addition to the typical data access required for a sales application, this application should enable a salesperson to synchronize the pull subscription on demand by clicking a button. 이 응용 프로그램은 영업 담당자가 설치하고 실행할 것이므로 클라이언트에서 구독을 구성하고 초기 스냅숏을 적용할 수 있는 기능도 필요합니다.Since a sales representative will install and run the application, it also needs to be able to configure a subscription and apply the initial snapshot at the client. 필요한 경우 응용 프로그램에서는 연결이 발견되면 구독을 자동으로 동기화할 수 있도록 Windows에서 제공하는 무선 연결 감지 인프라를 사용할 수도 있습니다.Optionally, the application will use the infrastructure provided by Windows for sensing wireless connectivity to automatically synchronize the subscription when a connection is detected.

  3. 게시자에 연결할 때 Windows 인증 및 VPN(가상 사설망)을 사용하는 것을 포함하여 복제와 관련된 모든 보안 지침을 따릅니다.Follow all of the security guidelines for replication, including using Windows Authentication and a virtual private network (VPN) when connecting to the publisher. 웹 동기화를 구현하는 경우에는 SSL(Secure Sockets Layer) 연결을 사용합니다.If implementing Web synchronization, use a secure sockets layer (SSL) connection. 자세한 내용은 웹 동기화 구성을 참조하세요.For more information, see Configure Web Synchronization.

  4. .NET Framework.NET Framework의 기능을 활용하려면 관리되는 코드 언어를 사용하여 응용 프로그램을 개발합니다.In order to take advantage of the features of the .NET Framework.NET Framework, the application is developed using a managed code language.

  5. 이러한 요구 사항을 고려했을 때 이 응용 프로그램에 필요한 모든 복제 기능은 RMO(복제 관리 개체) 관리 인터페이스를 사용하여 구현할 수 있습니다.Based on these requirements, the Replication Management Objects (RMO) managed interface can provide all of the needed replication functionality for this application.

    이 예제 시나리오는 SQL ServerSQL Server에 대해 다운로드할 수 있는 AdventureWorks 응용 프로그램 예제에서 구현되었습니다.This example scenario has been implemented in the AdventureWorks sample application that can be downloaded for SQL ServerSQL Server.