자습서: 서버와 모바일 클라이언트 간의 복제 구성(병합)

적용 대상:SQL Server

병합 복제본(replica)tion은 가끔만 연결된 중앙 서버와 모바일 클라이언트 간에 데이터를 이동하는 문제에 대한 좋은 솔루션입니다. 복제본(replica)tion 마법사를 사용하여 병합 복제본(replica) 토폴로지 구성 및 관리를 쉽게 수행할 수 있습니다.

이 자습서에서는 모바일 클라이언트에 대한 복제본(replica)tion 토폴로지를 구성하는 방법을 보여 줍니다. 병합 복제본(replica)tion에 대한 자세한 내용은 병합 복제본(replica) 개요를 참조하세요.

학습할 내용

이 자습서에서는 병합 복제본(replica)tion을 사용하여 중앙 데이터베이스의 데이터를 하나 이상의 모바일 사용자에게 게시하여 각 사용자가 고유하게 필터링된 데이터 하위 집합을 가져오도록 하는 방법을 설명합니다.

이 자습서에서는 다음을 수행하는 방법을 배우게 됩니다.

  • 병합 복제본(replica) 게시자를 구성합니다.
  • 병합 게시에 대한 모바일 구독자를 추가합니다.
  • 구독을 병합 게시에 동기화합니다.

필수 조건

이 자습서는 기본적인 데이터베이스 작업에는 익숙하지만 복제에 대한 경험은 풍부하지 않은 사용자를 위한 것입니다. 이 자습서를 시작하기 전에 자습서: 복제용 SQL 서버 준비를 완료해야 합니다.

이 자습서를 완료하려면 SQL Server, SSMS(SQL Server Management Studio) 및 AdventureWorks 데이터베이스가 필요합니다.

  • 게시자 서버(원본)에서 다음을 설치합니다.

    • SQL Server Express 또는 SQL Server Compact를 제외한 모든 SQL Server 버전. 이러한 버전은 복제본(replica) 게시자가 될 수 없습니다.
    • 샘플 데이터베이스입니다 AdventureWorks2022 . 보안을 강화하기 위해 샘플 데이터베이스는 기본적으로 설치되지 않습니다.
  • 구독자 서버(대상)에서 SQL Server Express 또는 SQL Server Compact를 제외한 모든 버전의 SQL Server를 설치합니다. 이 자습서에서 만든 게시는 SQL Server Express 또는 SQL Server Compact를 지원하지 않습니다.

  • SQL Server Management Studio를 설치합니다.

  • SQL Server 2017 Developer Edition을 설치 합니다.

  • AdventureWorks 샘플 데이터베이스를 다운로드합니다. SSMS에서 데이터베이스를 복원하는 방법에 대한 지침은 데이터베이스 복원을 참조하세요.

참고 항목

  • 두 개 이상의 버전이 떨어져 있는 SQL Server 인스턴스에서는 복제가 지원되지 않습니다. 자세한 내용은 복제 토폴로지에서 지원되는 SQL Server 버전을 참조 하세요.
  • SQL Server Management Studio에서 sysadmin 고정 서버 역할의 멤버인 로그인을 사용하여 게시자 및 구독자에 연결해야 합니다. 이 역할에 대한 자세한 내용은 서버 수준 역할을 참조 하세요.

이 자습서를 완료하는 데 소요되는 예상 시간: 60분

병합 복제본(replica)에 대한 게시자 구성

이 섹션에서는 SQL Server Management Studio를 사용하여 샘플 데이터베이스에 Employee, SalesOrderHeaderSalesOrderDetail 테이블의 하위 집합을 게시하여 병합 게시를 AdventureWorks2022 만듭니다. 이러한 테이블은 각 구독에 고유한 데이터 파티션이 포함되도록 매개 변수가 있는 행 필터로 필터링됩니다. 또한 병합 에이전트 사용하는 SQL Server 로그인을 PAL(게시 액세스 목록)에 추가합니다.

병합 게시 만들기 및 아티클 정의

  1. SQL Server Management Studio에서 게시자에 커넥트 서버 노드를 확장합니다.

  2. 개체 탐색기에서 SQL Server 에이전트를 마우스 오른쪽 단추로 클릭하고 시작을 선택하여 시작됩니다. 이 단계에서 에이전트를 시작하지 않는 경우 SQL Server 구성 관리자 수동으로 시작해야 합니다.

  3. 복제 폴더를 확장하고 로컬 게시를 마우스 오른쪽 단추로 클릭한 다음 새 게시를 선택합니다. 새 게시 마법사가 시작합니다.

    Selections to start the New Publication Wizard

  4. 게시 데이터베이스 페이지에서 AdventureWorks2022를 선택한 후, 다음을 선택합니다.

  5. 게시 유형 페이지에서 병합 게시를 선택한 후, 다음을 선택합니다.

  6. 구독자 유형 페이지에서 SQL Server 2008(10.0.x) 이상만 선택되었는지 확인하고 다음을 선택합니다.

  7. 아티클 페이지에서 테이블 노드를 확장합니다. 세 테이블(직원, SalesOrderHeaderSalesOrderDetail)을 선택합니다. 새로 만들기를 선택합니다.

    Table selections on the

    참고 항목

    Employee 테이블에는 hierarchyid 데이터 형식이 있는 열(OrganizationNode)이 포함되어 있습니다. 이 데이터 형식은 SQL Server 2017의 복제에만 지원됩니다.

    SQL 2017보다 낮은 빌드를 사용하는 경우, 양방향 복제에서 이 열을 사용할 때 잠재적인 데이터 손실을 알리는 메시지가 화면 맨 아래에 표시됩니다. 이 자습서에서는 이 메시지를 무시할 수 있습니다. 그러나 지원되는 빌드를 사용하지 않는 한 이 데이터 형식은 프로덕션 환경에서 복제본(replica) 안 됩니다.

    hierarchyid 데이터 형식을 복제하는 방법에 대한 자세한 내용은 복제에서 hierarchyid 열 사용을 참조하세요.

  8. 테이블 행 필터링 페이지에서 추가를 선택한 다음, 필터 추가를 선택합니다.

  9. 필터 추가 대화 상자의 필터링할 테이블 선택에서 Employee(HumanResources)를 선택합니다. LoginID 열을 선택하고 오른쪽 화살표를 선택하여 필터 쿼리의 WHERE 절에 열을 추가하고 다음과 같이 WHERE 절을 수정합니다.

     WHERE [LoginID] = HOST_NAME()  
    

    이 테이블에서 행을 선택하면 하나의 구독으로만 이동되고 확인을 선택합니다.

    Selections for adding a filter

  10. 테이블 행 필터링 페이지에서 Employee(Human Resources)를 선택하고 추가를 선택한 다음, 선택한 필터 확장을 위해 조인 추가를 선택합니다.

    a. 조인 추가 대화 상자의 인된 테이블 아래에서 Sales.SalesOrderHeader를 선택합니다. 수동으로 join 문 작성을 선택하고 다음과 같이 join 문을 완료합니다.

    ON [Employee].[BusinessEntityID] =  [SalesOrderHeader].[SalesPersonID] 
    

    b. 조인 옵션 지정에서 고유 키를 선택한 다음, 확인을 선택합니다.

    Selections for adding a join to the filter

  11. 테이블 행 필터링 페이지에서 SalesOrderHeader를 선택하고 추가를 선택한 다음, 선택한 필터 확장을 위해 조인 추가를 선택합니다.

    a. 조인 추가 대화 상자의 인된 테이블 아래에서 Sales.SalesOrderDetail을 선택합니다.
    b. 작성기 사용을 선택하여 문을 만듭니다.
    c. 미리 보기 상자에서 조인 문이 다음과 같은지 확인합니다.

    ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID] 
    

    d. 조인 옵션 지정에서 고유 키를 선택한 다음, 확인을 선택합니다. 다음을 선택합니다.

    Selections for adding another join, for sales orders

  12. 즉시 스냅샷 만들기를 선택하고 스냅샷 에이전트 실행 시간 예약을 선택 취소한 후 다음을 선택합니다.

    Selection for creating a snapshot immediately

  13. 에이전트 보안 페이지에서 보안 설정 선택합니다. 프로세스 계정 상자에 Publisher_Machine_Name>\repl_스냅샷입력<하고 이 계정의 암호를 입력한 다음 확인을 선택합니다. 다음을 선택합니다.

    Selections for setting Snapshot Agent security

  14. 마법사 완료 페이지에서 게시 이름 상자에 AdvWorksSalesOrdersMerge를 입력하고 마침을 선택합니다.

  15. 게시를 만든 후 닫기를 선택합니다. 개체 탐색기 복제 노드 아래에서 로컬 게시를 마우스 오른쪽 단추로 클릭하고 새로 고침을 선택하여 새 병합 복제본(replica) 표시합니다.

스냅샷 생성의 상태 보기

  1. SQL Server Management Studio에서 게시자에 커넥트 서버 노드를 확장한 다음 복제 폴더입니다.

  2. 로컬 게시 폴더에서 AdvWorksSalesOrdersMerge를 마우스 오른쪽 단추로 클릭한 다음 스냅샷 에이전트 상태 보기를 선택합니다.

    Selections for viewing Snapshot Agent status

  3. 게시에 대한 스냅샷 에이전트 작업의 현재 상태 나타납니다. 다음 단원을 계속하기 전에 스냅샷 작업이 성공했는지 확인합니다.

PAL에 병합 에이전트 로그인 추가

  1. SQL Server Management Studio에서 게시자에 커넥트 서버 노드를 확장한 다음 복제 폴더입니다.

  2. 로컬 게시 폴더에서 AdvWorksSalesOrdersMerge를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

    a. 게시 액세스 목록 페이지를 선택하고 추가를 선택합니다.

    b. 게시 액세스 추가 대화 상자<에서 Publisher_Machine_Name>\repl_merge 선택하고 확인을 선택합니다. 확인을 다시 선택합니다.

    Selections for adding the Merge Agent login

자세한 내용은 다음을 참조하세요.

병합 게시에 대한 구독 만들기

이 섹션에서는 이전에 만든 병합 게시에 구독을 추가합니다. 이 자습서에서는 원격 구독자(NODE2\SQL2016)를 사용합니다. 그런 다음, 구독 데이터베이스에 대한 사용 권한을 설정하고 새 구독에 대한 필터링된 데이터 스냅샷을 수동으로 생성합니다.

병합 게시를 위한 구독자 추가

  1. SQL Server Management Studio에서 구독자에게 커넥트 서버 노드를 확장합니다. 복제 폴더를 확장하고 로컬 구독 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 구독을 선택합니다. 새 구독 마법사가 시작됩니다.

    Selections to start the New Subscription Wizard

  2. 게시 페이지에서 게시자 목록에서 SQL Server 게시자 찾기를 선택합니다.

    서버로 커넥트 대화 상자의 서버 이름 상자에 게시자 인스턴스의 이름을 입력하고 커넥트 선택합니다.

    Selections for adding a publisher

  3. AdvWorksSalesOrdersMerge를 선택하고 다음을 선택합니다.

  4. 병합 에이전트 위치 페이지에서 각 에이전트를 해당 구독자에서 실행을 선택한 후, 다음을 선택합니다.

  5. 구독자 페이지에서 구독자 서버의 인스턴스 이름을 선택합니다. 구독 데이터베이스 아래 목록에서 새 데이터베이스를 선택합니다.

    새 데이터베이스 대화 상자의 데이터베이스 이름 상자에 SalesOrdersReplica입력합니다. 확인을 선택하고 다음을 선택합니다.

    Selections for adding a database to the subscriber

  6. 병합 에이전트 보안 페이지에서 줄임표(...) 단추를 선택합니다. 프로세스 계정 상자에 Subscriber_Machine_Name>\repl_merge입력<하고 이 계정의 암호를 입력합니다. 확인을 선택하고 다음을 선택한 다음, 다음을 다시 선택합니다.

    Selections for Merge Agent security

  7. 동기화 일정 페이지에서 요청 시 에이전트 일정을 실행하도록 설정합니다. 다음을 선택합니다.

  8. 구독 초기화 페이지의 초기화 시기 목록에서 첫 번째 동기화 시를 선택합니다. 다음 을 선택하여 구독 유형 페이지로 진행하고 적절한 구독 유형을 선택합니다. 이 자습서에서는 클라이언트를 사용합니다. 구독 유형을 선택한 후 다음을 다시 선택합니다.

    Selections for initializing subscriptions at first synchronization

  9. HOST_NAME 값 페이지의 HOST_NAME 값 상자에 adventure-works\pamela0값을 입력합니다. 그런 다음 마침을 선택합니다.

  10. 다시 마침을 선택합니다. 구독을 만든 후 닫기를 선택합니다.

구독자에서 서버 권한 설정

  1. SQL Server Management Studio에서 구독자에게 커넥트. 보안을 확장하고 로그인을 마우스 오른쪽 단추로 클릭한 다음 새 로그인을 선택합니다.

    일반 페이지에서 검색선택한 다음 개체 이름 입력 상자에 Subscriber_ Machine_Name>\repl_merge 입력<합니다. 이름 확인을 선택한 다음, 확인을 선택합니다.

    Selections for setting the login

  2. 사용자 매핑 페이지에서 SalesOrdersReplica 데이터베이스를 선택하고 db_owner 역할을 선택합니다. 보안 개체 페이지에서 추적 변경에 대한 명시적 권한을 부여합니다. 확인을 선택합니다.

구독에 대한 필터링된 데이터 스냅샷 만들기

  1. SQL Server Management Studio에서 게시자에 커넥트 서버 노드를 확장한 다음 복제 폴더입니다.

  2. 로컬 게시 폴더에서 AdvWorksSalesOrdersMerge 게시를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

    a. 데이터 파티션 페이지를 선택하고 추가를 선택합니다.
    b. 데이터 파티션 추가 대화 상자의 HOST_NAME 값 상자에 adventure-works\pamela0를 입력한 다음, 확인을 선택합니다.
    c. 새로 추가된 파티션을 선택하고 선택한 스냅샷 생성을 선택한 다음 확인을 선택합니다.

    Selections for adding a partition

자세한 내용은 다음을 참조하세요.

구독을 병합 게시에 동기화

이 섹션에서는 SQL Server Management Studio를 사용하여 구독을 초기화하는 병합 에이전트 시작합니다. 또한 이 절차를 사용하여 게시자를 동기화합니다.

동기화 시작 및 구독 초기화

  1. SQL Server Management Studio에서 구독자에게 커넥트.

  2. SQL Server 에이전트 실행 중인지 확인합니다. 그렇지 않은 경우 개체 탐색기 SQL Server 에이전트 마우스 오른쪽 단추로 클릭하고 시작을 선택합니다. 에이전트를 시작하지 못한 경우 SQL Server 구성 관리자를 사용하여 수동으로 시작해야 합니다.

  3. 복제 노드를 확장합니다 . 로컬 구독 폴더에서 SalesOrdersReplica 데이터베이스에서 구독을 마우스 오른쪽 단추로 클릭한 다음 동기화 상태 보기를 선택합니다.

    시작을 선택하여 구독을 초기화합니다.

    Synchronization status with

다음 단계

병합 복제를 위해 게시자와 구독자를 모두 성공적으로 구성했습니다. 다음도 가능합니다.

  1. 게시자 또는 구독자의 SalesOrderHeader 또는 SalesOrderDetail 테이블에 데이터를 삽입, 업데이트 또는 삭제합니다.
  2. 게시자와 구독자 간에 데이터를 동기화하는 데 네트워크 연결을 사용할 수 있는 경우 이 절차를 반복합니다.
  3. 복제된 변경 내용을 보려면 다른 서버에 SalesOrderHeader 또는 SalesOrderDetail 테이블을 쿼리합니다.

자세한 내용은 다음을 참조하세요.