다음을 통해 공유


연습: 데이터 소스 구성 마법사를 사용하여 필요에 따라 연결되는 응용 프로그램 만들기

이 연습에서는 데이터 소스 구성 마법사를 실행할 때 동기화 서비스를 통합하여 필요에 따라 연결되는 응용 프로그램을 개발하기 위한 단계별 지침을 제공합니다.

필요에 따라 연결되는 응용 프로그램이란 경우에 따라서는 원격 데이터에 액세스하지 못할 수도 있는 응용 프로그램입니다. 이러한 응용 프로그램은 항상 원격 데이터에 액세스하는 것이 아니기 때문에 클라이언트에 있는 로컬 데이터베이스의 데이터를 사용하고 주기적으로 원격 데이터베이스와 로컬 데이터베이스의 데이터를 동기화합니다. 로컬 데이터베이스와 원격 데이터베이스의 데이터 동기화는 Microsoft Synchronization Services for ADO.NET(Microsoft.Synchronization.Data 네임스페이스)을 통해 쉽게 처리됩니다. 처음에 이러한 동기화는 새 항목 추가 대화 상자를 사용하여 응용 프로그램에 로컬 데이터베이스 캐시를 추가하거나 데이터 소스 구성 마법사를 실행하여 만듭니다. 이 연습에서는 마법사를 통해 동기화를 만듭니다.

이 연습에서는 다음 작업을 수행합니다.

  • 새 Windows Forms 응용 프로그램을 만듭니다.

  • 데이터 소스 구성 마법사를 실행하여 로컬 데이터베이스 캐싱을 사용하는 형식화된 데이터 집합을 만들고 구성합니다.

  • Windows Form을 만들어 데이터를 표시하고 동기화를 확인합니다.

  • 데이터베이스 간의 동기화를 초기화할 코드를 추가합니다.

  • 동기화된 레코드 수에 대한 정보를 표시할 메시지 상자를 추가합니다.

사전 요구 사항

이 연습을 완료하려면 다음이 필요합니다.

  • Northwind 샘플 데이터베이스의 SQL Server 버전에 액세스할 수 있어야 합니다. 자세한 내용은 방법: 샘플 데이터베이스 설치를 참조하십시오.

  • Visual Studio를 실행하는 컴퓨터에 SQL Server Compact 3.5가 설치되어 있어야 합니다.

Windows Forms 응용 프로그램 만들기

나중에 데이터를 Windows Form에 표시해서 동기화가 제대로 수행되었는지 확인할 것이므로 이 연습의 첫 번째 단계는 새 Windows Forms 응용 프로그램을 만드는 것입니다.

참고

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

새 Windows Forms 응용 프로그램을 만들려면

  1. 파일 메뉴에서 새 프로젝트를 만듭니다.

  2. 프로젝트 이름을 OCSWalkthrough2로 지정합니다.

  3. Windows Forms 응용 프로그램 템플릿을 클릭한 다음 확인을 클릭합니다. 자세한 내용은 Windows 기반 응용 프로그램 만들기를 참조하십시오.

    OCSWalkthrough2 프로젝트가 만들어져 솔루션 탐색기에 추가됩니다.

로컬 데이터베이스 캐시가 포함된 데이터 소스 만들기

이 연습에서는 데이터 소스 구성 마법사를 사용하여 응용 프로그램에 동기화 서비스를 통합하는 방법을 보여 주므로 이제 마법사를 시작해야 합니다. 이 단계에서는 마법사를 시작하고 Northwind 샘플 데이터베이스의 Customers 테이블을 기반으로 하는 데이터 집합을 만듭니다. 데이터 집합에 추가할 데이터베이스 테이블을 선택할 때에는 로컬 데이터 캐싱 사용 옵션을 선택합니다.

로컬 데이터베이스 캐시가 포함된 데이터 소스를 만들려면

  1. 데이터 메뉴에서 데이터 소스 표시를 클릭합니다.

  2. 데이터 소스 창에서 새 데이터 소스 추가를 클릭하여 데이터 소스 구성 마법사를 시작합니다.

  3. 데이터 소스 형식 선택 페이지에서 기본값인 데이터베이스를 선택된 채로 두고 다음을 클릭합니다.

  4. 데이터 연결 선택 페이지에서 다음 단계 중 하나를 수행합니다.

    • SQL Server 버전의 Northwind 샘플 데이터베이스에 대한 데이터 연결이 드롭다운 목록에 표시되면 해당 연결을 선택합니다.

      또는

    • 새 연결을 클릭하여 데이터 소스 선택 또는 연결 추가/수정 대화 상자를 열고 SQL Server 버전의 Northwind 데이터베이스에 대한 새 연결을 만듭니다. 자세한 내용은 연결 추가/수정 대화 상자(일반)를 참조하십시오.

  5. 데이터베이스에 암호가 필요하면 중요한 데이터를 포함하는 옵션을 선택하고 다음을 클릭합니다.

  6. 응용 프로그램 구성 파일에 연결 문자열 저장 페이지에서 다음을 클릭합니다.

  7. 데이터베이스 개체 선택 페이지에서 테이블 노드를 확장합니다.

  8. Customers 테이블을 선택합니다.

  9. 로컬 데이터베이스 캐싱 사용을 선택합니다.

  10. 데이터베이스 개체 선택 페이지에서 다음을 클릭합니다.

  11. 캐시할 테이블 선택 페이지에서 Customers 테이블을 선택합니다.

    참고

    동기화 모드에 대해 기본값인 증분을 그대로 둡니다. 증분 모드를 선택하면 마지막 동기화 이후 서버에 적용된 변경 내용만 동기화됩니다. 스냅샷 모드를 선택하면 로컬로 캐시된 테이블 전체가 서버의 현재 테이블로 바뀝니다. 이 값의 선택 여부에 관계없이 처음에는 전체 테이블이 로컬 데이터베이스 캐시로 로드되므로 항상 완전한 현재 데이터 집합으로 작업을 시작하게 됩니다.

  12. 마침을 클릭합니다.

  13. 로컬로 캐시된 테이블 중 하나의 동기화 모드가 첫 동기화 이후 새 변경 내용 및 증분 변경 내용으로 설정되어 있으면 SQL Server 데이터베이스를 업데이트해야 하고 SQL 스크립트 생성 대화 상자가 열립니다. 기본적으로 대화 상자의 두 옵션이 모두 선택되어 있습니다.

    • 증분 변경 내용을 위해 서버 업데이트. 이 대화 상자를 닫는 즉시 증분 동기화를 위해 서버를 자동으로 업데이트하려면 이 옵션을 선택합니다.

    • 나중에 사용하기 위해 프로젝트에 SQL 스크립트 저장. 생성된 SQL 스크립트를 나중에 SQL Server 데이터베이스에서 실행할 수 있도록 프로젝트에 추가하려면 이 옵션을 선택합니다. 실행 취소 스크립트도 생성되어 프로젝트에 추가됩니다.

  14. 확인을 클릭합니다.

응용 프로그램에서 동기화를 사용할 수 있도록 설정

이전 단계에서 데이터 소스 구성 마법사 실행을 마치면 데이터 동기화가 구성됩니다. 이제 응용 프로그램에 다음이 포함됩니다.

  • 로컬 버전의 Northwind 데이터베이스(Northwind.sdf)

  • 데이터 동기화 설정 파일(NorthwindCache.sync)

  • 데이터 소스 구성 마법사를 통해 생성된 형식화된 데이터 집합 NorthwindDataSet.xsd. 여기에는 로컬 데이터베이스의 데이터를 사용하여 채울 Customers 테이블이 포함됩니다.

    초기 동기화가 실행되고 로컬 데이터베이스 캐시의 Customers 테이블이 서버 데이터베이스와 동기화됩니다. 즉, 로컬 SQL Server Compact 3.5 데이터베이스(Northwind.sdf)의 Customers 테이블이 서버 데이터베이스의 Customers 테이블에 현재 있는 데이터로 채워집니다.

  • 추적 열, 삭제된 항목 테이블, 서버의 변경 내용을 추적하는 필수 트리거를 만드는 데 사용되는 스크립트가 포함된 SQLScripts 폴더

  • 추적 열, 삭제된 항목 테이블 및 서버에 추가된 필수 트리거를 제거하는 스크립트가 포함된 SQLUndoScripts 폴더

    참고

    SQL 스크립트는 서버에서 수정 작업이 필요한 경우에만 만들어집니다. 삭제된 항목 테이블과 추적 열이 서버에 이미 있으면 스크립트가 만들어지지 않습니다.

  • 다음 Microsoft Synchronization Services for ADO.NET DLL에 대한 참조

    • Microsoft.Synchronization.Data

    • Microsoft.Synchronization.Data.Server

    • Microsoft.Synchronization.Data.SqlServerCe

응용 프로그램에 동기화 기능 추가

데이터 동기화를 구성한 후에도 응용 프로그램에 동기화 기능을 추가해야 합니다. 더 구체적으로는 동기화 프로세스를 시작하는 코드를 추가해야 합니다. 다음 단계에서는 데이터를 표시하고 동기화 프로세스를 시작하는 컨트롤을 폼에 추가합니다.

먼저 Customers 노드를 데이터 소스 창에서 폼으로 끌어서 DataGridView 컨트롤을 추가합니다. DataGridView는 로컬 데이터베이스 캐시(프로젝트에 있는 Northwind.sdf 데이터베이스)의 Customers 테이블을 표시하므로 이를 통해 로컬 데이터베이스와 원격 데이터베이스 간에 데이터가 동기화되는지 확인할 수 있습니다. 동기화 프로세스를 시작하는 단추도 추가합니다.

데이터 바인딩된 폼을 만들어 데이터 동기화를 초기화하고 확인하려면

  1. Customers 노드를 데이터 소스 창에서 Form1로 끌어서 놓습니다.

  2. 단추 컨트롤을 도구 상자에서 Form1로 끌어서 놓습니다. Name 속성을 SynchronizeButton으로 설정하고 Text 속성을 Synchronize Now로 설정합니다.

  3. Synchronize Now 단추를 두 번 클릭하여 단추 클릭 이벤트 처리기를 만들고 폼을 코드 편집기에서 엽니다.

  4. 동기화 프로세스를 시작할 코드를 추가한 다음 데이터 집합의 Customers 테이블을 다시 채웁니다. 이벤트 처리기의 코드는 다음과 같아야 합니다.

    참고

    syncStats 변수를 선언하는 코드 줄은 이 문서의 뒷부분에서 설명합니다.

    ' Call the Synchronize method to synchronize
    ' data between local and remote databases.
    Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = 
        syncAgent.Synchronize()
    
    ' After synchronizing the data, refill the
    ' table in the dataset.
    Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
    
    // Call the Synchronize method to synchronize
    // data between local and remote databases.
    NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats;
    syncStats = syncAgent.Synchronize();
    // After synchronizing the data, refill the
    // table in the dataset.
    this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
    

응용 프로그램 테스트

응용 프로그램을 테스트하려면

  1. F5 키를 누릅니다.

  2. 응용 프로그램이 실행 중일 때 서버 탐색기/데이터베이스 탐색기 또는 다른 데이터베이스 관리 도구를 사용하여 원격 서버 데이터베이스에 연결한 후 일부 레코드를 수정합니다.

    1. 서버 탐색기/데이터베이스 탐색기에서 Northwind.sdf에 대한 연결이 아니라 원격 데이터베이스 서버에서 Customers 테이블을 찾습니다.

    2. Customers 테이블을 마우스 오른쪽 단추로 클릭하고 테이블 데이터 표시를 클릭합니다.

    3. 한 개 이상의 레코드를 수정하고 변경 내용을 커밋합니다. 그런 다음 수정된 행 밖으로 이동합니다.

  3. 폼으로 돌아가서 Synchronize Now를 클릭합니다.

  4. 원격 데이터베이스에 대한 수정 내용이 로컬 데이터베이스로 동기화되고 폼에 표시되는지 확인합니다.

  5. 폼을 닫습니다. 중지합니다.

동기화를 통한 정보 검색

Synchronize 메서드를 호출하면 단순히 동기화 프로세스만 초기화되는 것이 아닙니다. Synchronize 메서드는 동기화에 대한 정보를 액세스할 수 있는 SyncStatistics 개체도 반환합니다.

동기화 통계에 액세스하려면

  • Form1을 코드 편집기에서 열고 SynchronizeButton_Click 이벤트 처리기의 끝 부분, 이전 단계에서 추가된 코드 뒤에 다음 코드를 추가합니다.

        MessageBox.Show("Changes downloaded: " & 
    syncStats.TotalChangesDownloaded.ToString)
    
    MessageBox.Show("Changes downloaded: " +
        syncStats.TotalChangesDownloaded.ToString());
    

응용 프로그램 테스트

응용 프로그램을 테스트하려면

  1. F5 키를 누릅니다.

  2. 응용 프로그램이 실행 중일 때 서버 탐색기/데이터베이스 탐색기 또는 다른 데이터베이스 관리 도구를 사용하여 원격 서버 데이터베이스에 연결한 후 일부 레코드를 수정합니다.

    1. 서버 탐색기/데이터베이스 탐색기에서 Northwind.sdf에 대한 연결이 아니라 원격 데이터베이스 서버에서 Customers 테이블을 찾습니다.

    2. Customers 테이블을 마우스 오른쪽 단추로 클릭하고 테이블 데이터 표시를 클릭합니다.

    3. 한 개 이상의 레코드를 수정하고 변경 내용을 커밋합니다. 그런 다음 수정된 행 밖으로 이동합니다.

  3. 폼으로 돌아가서 Synchronize Now를 클릭합니다.

  4. 동기화된 레코드에 대한 정보가 포함된 메시지 상자가 나타납니다.

  5. 원격 데이터베이스에 대한 수정 내용이 로컬 데이터베이스로 동기화되고 폼에 표시되는지 확인합니다.

다음 단계

응용 프로그램 요구 사항에 따라서는 응용 프로그램에 로컬 데이터베이스 캐시를 구성한 후 몇 가지 단계를 더 수행해야 할 수도 있습니다. 예를 들어 이 응용 프로그램을 다음과 같이 보완할 수 있습니다.

참고 항목

작업

연습: 로컬 데이터베이스와 함께 필요에 따라 연결되는 응용 프로그램 배포

개념

필요에 따라 연결되는 응용 프로그램 개요

SQL Server Compact 3.5 및 Visual Studio