다음을 통해 공유


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

적용 대상: SQL Server

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

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

학습할 내용

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

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

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

필수 조건

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

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

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

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

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

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

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

참고 항목

두 개 이상의 버전이 떨어져 있는 SQL Server 인스턴스에서는 복제가 지원되지 않습니다.

SQL Server Management Studio에서는 sysadmin 고정 서버 역할의 멤버인 로그인을 사용하여 게시자 및 구독자에 연결해야 합니다. 이 역할에 대한 자세한 내용은 서버 수준 역할을 참조하세요.

이 자습서에 소요되는 예상 시간: 60분

병합 복제에 대한 게시자 구성

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

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

  1. SQL Server Management Studio에서 게시자에 연결한 다음 해당 서버 노드를 확장합니다.

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

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

    새 게시 마법사를 시작하기 위한 선택 항목

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

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

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

  7. 문서 페이지에서 테이블 노드를 확장합니다. 세 테이블(직원, SalesOrderHeaderSalesOrderDetail)을 선택합니다. 다음을 선택합니다.

    참고 항목

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

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

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

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

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

     WHERE [LoginID] = HOST_NAME()  
    

    이 테이블의 행을 단일 구독으로 이동을 선택하고 확인을 선택합니다.

    필터를 추가하기 위한 선택 항목

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

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

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

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

    필터에 join을 추가하기 위한 선택 영역

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

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

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

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

    판매 주문에 대해 다른 join을 추가하기 위한 선택 영역

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

    스냅샷을 즉시 만들기 위한 선택 영역

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

    스냅샷 에이전트 보안 설정을 위한 선택 영역

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

    게시 이름이 있는

  15. 게시가 만들어진 후 닫기를 선택합니다. 개체 탐색기복제 노드에서 로컬 게시새로 고침을 마우스 오른쪽 단추로 클릭하여 새 병합 복제를 봅니다.

스냅샷 생성 상태 보기

  1. SQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 후 복제 폴더를 확장합니다.

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

    스냅샷 에이전트 상태를 보기 위한 선택 영역

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

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

  1. SQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 후 복제 폴더를 확장합니다.

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

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

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

    병합 에이전트 로그인을 추가하기 위한 선택 영역

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

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

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

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

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

    새 구독 마법사를 시작하기 위한 선택 영역

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

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

    게시자를 추가하기 위한 선택 영역

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

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

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

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

    구독자에 데이터베이스를 추가하기 위한 선택 영역

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

    병합 에이전트 보안을 위한 선택 영역

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

    에이전트에 대한

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

    첫 번째 동기화 시 구독 초기화를 위한 선택 영역

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

    “HOST_NAME 값” 페이지

  10. 다시 마침을 선택합니다. 구독이 생성되면 닫기를 선택합니다.

구독자에서 서버 권한 설정

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

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

    로그인을 설정하기 위한 선택 영역

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

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

  1. SQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 후 복제 폴더를 확장합니다.

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

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

    파티션을 추가하기 위한 선택 영역

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

병합 게시에 구독 동기화

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

동기화 시작 및 구독 초기화

  1. SQL Server Management Studio에서 구독자에 연결합니다.

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

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

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

다음 단계

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

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

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