다음을 통해 공유


방법: 응용 프로그램에서 데이터 동기화 구성

데이터베이스에서 지속적으로 검색할 필요가 없거나 때에 따라 사용이 불가능할 수 있는 원격 데이터베이스 데이터가 응용 프로그램에 필요한 경우 로컬 데이터베이스를 사용하여 응용 프로그램이 설치된 클라이언트 컴퓨터에 데이터를 저장할 수 있습니다.

데이터베이스에 있는 몇몇 테이블의 데이터를 사용하는 재고 응용 프로그램의 예를 들어 보겠습니다. 개별 부품의 재고 수량은 지속적으로 변경되는 중요한 데이터이므로 응용 프로그램은 항상 데이터베이스의 현재 값을 반영해야 합니다. 그러나 이 응용 프로그램은 거의 변경되지 않는 데이터인 유효한 선적 회사 목록도 표시합니다. 유효한 선적 회사는 Shippers 테이블에 저장되며 데이터베이스에서 데이터를 쿼리할 때마다 검색할 필요가 없습니다. 이러한 Shippers 테이블을 로컬 데이터베이스 캐시에 저장하면 응용 프로그램이 원격 데이터베이스에 대해 수행하는 불필요한 라운드트립 횟수를 줄일 수 있습니다. 자주 변경되지 않거나 미리 수립된 일정에 따라 변경되는 데이터는 로컬 데이터베이스 캐시에 저장하는 것이 좋습니다.

로컬 데이터베이스 캐시에서는 SQL Server Compact 3.5 데이터베이스를 사용하여 데이터를 로컬로 저장합니다. 기존 SQL Server Compact 3.5 데이터베이스를 로컬 데이터베이스 캐시로 사용할 수 있습니다. 아직 로컬 데이터베이스가 없는 경우 데이터 동기화 구성 대화 상자를 설정하여 새 로컬 데이터베이스를 만들 수 있습니다.

로컬 데이터베이스를 응용 프로그램에 추가하고 데이터 동기화 구성 대화 상자의 설정을 완료한 다음에는 동기화를 시작하는 코드를 응용 프로그램에 추가해야 합니다. 데이터가 성공적으로 동기화되면 로컬 데이터베이스에서 데이터 집합의 테이블을 다시 채우는 코드도 추가해야 합니다.

참고

데이터 동기화 구성 대화 상자에서는 다운로드 시나리오에 대해서만 Microsoft Synchronization Services for ADO.NET을 구성할 수 있습니다. 따라서 데이터 동기화 구성 대화 상자를 사용하여 데이터 동기화를 구성한 후 Microsoft.Synchronization.Data.SyncAgent.Synchronize를 호출하면 원격 데이터베이스의 변경 내용만 로컬 데이터베이스에서 업데이트됩니다. 로컬 데이터베이스의 데이터에서 변경한 내용은 원격 데이터베이스에 업로드되지 않습니다. 데이터 동기화 구성 대화 상자를 사용하여 데이터 동기화를 구성한 후에는 동기화 도중 업로드가 가능하도록, 즉 양방향 동기화가 가능하도록 프로그래밍 방식으로 설정할 수 있습니다. 자세한 내용은 방법: 양방향 동기화를 위해 로컬 및 원격 데이터베이스 구성을 참조하십시오.

프로젝트에 로컬 데이터베이스 캐시 추가

프로젝트에 .sync 파일을 추가하고 데이터 동기화 구성 대화 상자로 이를 구성하여 데이터를 로컬로 캐시하도록 응용 프로그램을 구성할 수 있습니다. 새 항목 추가 대화 상자를 사용하여 프로젝트에 .sync 파일을 추가할 수 있습니다.

다음 절차에서는 데이터 동기화를 구성하는 데 관련된 기본 단계를 설명합니다. 실제 데이터를 사용하는 예제를 보려면 연습: 필요에 따라 연결되는 응용 프로그램 만들기를 참조하십시오.

참고

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

데이터 동기화를 구성하려면

  1. 프로젝트 메뉴에서 새 항목 추가를 클릭합니다.

  2. 로컬 데이터베이스 캐시 템플릿을 클릭합니다.

  3. LocalDataCache1.sync의 기본 이름을 변경하거나 그대로 적용합니다.

  4. 추가를 클릭합니다.

    .sync 파일이 프로젝트에 추가되고 데이터 동기화 구성 대화 상자가 열립니다.

  5. 연결하려는 원격 데이터베이스로 서버 연결을 설정합니다.

  6. 데이터를 로컬로 저장할 로컬 SQL Server Compact 3.5 데이터베이스로 클라이언트 연결을 설정합니다. 로컬 데이터베이스가 없으면 DatabaseName.sdf(새 항목)의 기본 설정을 그대로 적용하여 프로젝트에 새 데이터베이스를 만들 수 있습니다. 새 데이터베이스의 이름은 서버 연결에 지정한 데이터베이스의 이름을 기반으로 합니다.

    참고

    확인 단추는 기본적으로 비활성화되어 있습니다. 캐시된 테이블 영역에 테이블을 추가하고 나면 이 단추를 사용할 수 있습니다.

  7. 추가를 클릭하여 오프라인으로 사용할 테이블 구성 대화 상자를 열고 로컬 데이터베이스 캐시에 추가할 데이터베이스 테이블을 선택하여 구성합니다.

  8. 로컬 데이터베이스 캐시에 추가할 데이터베이스 테이블을 선택하고 다음과 같은 각 설정을 구성합니다.

    • 다운로드할 데이터:

      첫 동기화 이후 새 변경 내용 및 증분 변경 내용

      이 설정은 데이터를 마지막으로 동기화한 이후 수정된 레코드를 서버에서 검색합니다. 동기화를 처음 호출할 때는 전체 테이블이 다운로드됩니다.

      매번 전체 테이블

      이 설정은 로컬 테이블을 삭제하고 서버에 있는 테이블을 대신 가져옵니다.

    • 업데이트 비교에 사용할 열

      이 항목은 선택된 테이블에서 레코드를 언제 마지막으로 업데이트했는지 추적하는 데 사용되는 열 이름으로 설정합니다. 기본적으로 이 목록에는 DateTime 또는 TimeStamp로 정의된 모든 열이 표시됩니다. 수정된 레코드를 추적하는 데 사용되는 열이 테이블에 포함되어 있지 않으면 **LastEditDate(새 항목)**의 기본 설정을 그대로 두면 됩니다. 이 경우 추적 열이 자동으로 만들어집니다.

    • 삽입 비교에 사용할 열

      이 항목은 선택된 테이블에서 새 레코드를 테이블에 언제 추가했는지 추적하는 데 사용되는 열 이름으로 설정합니다. 기본적으로 이 목록에는 DateTime 또는 TimeStamp로 정의된 모든 열이 표시됩니다. 새 레코드를 추적하는 데 사용되는 열이 테이블에 포함되어 있지 않으면 **CreationDate(새 항목)**의 기본 설정을 그대로 두면 됩니다. 이 경우 추적 열이 자동으로 만들어집니다.

    • 삭제된 항목 이동 위치

      이 항목은 삭제된 레코드를 저장하는 데 사용되는 데이터베이스 서버의 테이블로 설정합니다. 기본적으로 이 목록에는 tableName_Deleted 또는 tableName_Tombstone이라는 이름의 테이블이 모두 표시됩니다. 삭제된 항목을 저장하기 위한 테이블이 데이터베이스에 포함되어 있지 않으면 tableName**_Tombstone(새 항목)**의 기본 설정을 그대로 두면 됩니다. 이 경우 삭제된 항목 테이블이 자동으로 만들어집니다.

      참고

      오프라인으로 사용하기 위해 구성하는 테이블 각각에 대해 이들 설정을 구성합니다.

  9. 데이터베이스 서버를 구성하는 데 사용되는 서버 쪽 스크립트를 생성하고 실행하도록 스크립트 생성 옵션이 기본적으로 자동 설정됩니다. 이러한 스크립트가 필요하지 않거나 데이터베이스 서버에 액세스할 수 없는 경우에는 이 옵션을 해제하고 스크립트를 수동으로 실행하거나 테이블을 수정할 수 있습니다. 서버를 변경할 필요가 없으면 스크립트가 생성되지 않습니다.

    참고

    이러한 스크립트는 선택된 테이블에 추적 열을 추가하고, 삭제된 항목을 저장하기 위한 테이블을 만들고, 로컬로 캐시하기 위해 설정한 테이블에서의 삽입, 업데이트 및 삭제를 추적하는 데 필요한 몇 가지 트리거를 추가합니다.

  10. 확인을 클릭합니다.

  11. 코드 예제 표시를 클릭하여 코드 예제 대화 상자를 엽니다. 이 대화 상자에는 동기화 프로세스를 시작하는 코드 조각이 제공됩니다. 이 코드 조각을 클립보드로 복사한 다음 프로그램에 삽입할 수 있습니다.

  12. 원하는 경우 고급 옵션을 설정합니다.

    데이터 동기화 구성 대화 상자의 고급 옵션을 사용하면 테이블을 개별적으로 동기화할지 한 번의 트랜잭션으로 한꺼번에 동기화할지 여부를 설정할 수 있습니다. 이 옵션으로 N 계층 응용 프로그램에 대한 코드 분리를 활성화할 수도 있습니다.

    1. 단일 트랜잭션에서 테이블 동기화. 기본적으로 이 옵션은 선택되어 있지 않으며, 모든 테이블이 개별적으로 동기화됩니다. 이 경우 오류가 발생하면 오류가 있는 테이블의 변경 내용만 롤백됩니다. 이 옵션을 선택하면 모든 테이블이 단일 트랜잭션으로 동기화됩니다. 이 경우 오류가 발생하면 모든 테이블의 모든 변경 내용이 롤백됩니다.

    2. 동기화 구성 요소 만들기. 기본적으로 클라이언트와 서버 모두에 대해 동기화 구성 요소가 생성됩니다. 응용 프로그램의 요구 사항에 따라 이 옵션을 클라이언트만 또는 서버만으로 설정할 수 있습니다.

    3. 서버 프로젝트 위치. 기본적으로 서버의 동기화 구성 요소는 현재 프로젝트에 생성됩니다. 서버의 동기화 구성 요소를 솔루션에 포함된 임의의 Visual Basic 또는 Visual C# 프로젝트에 생성하도록 이 옵션을 설정할 수 있습니다.

    4. 클라이언트 프로젝트 위치. 기본적으로 클라이언트의 동기화 구성 요소는 현재 프로젝트에 생성됩니다. 클라이언트의 동기화 구성 요소를 솔루션에 포함된 임의의 Visual Basic 또는 Visual C# 프로젝트에 생성하도록 이 옵션을 설정할 수 있습니다.

데이터 동기화 구성 대화 상자에 필요한 정보를 모두 입력했으면 동기화를 시작하는 코드를 응용 프로그램에 추가해야 합니다.

참고

데이터를 동기화하면 데이터 집합의 테이블이나 응용 프로그램의 다른 개체가 아니라 로컬 데이터베이스가 업데이트됩니다. 따라서 로컬 데이터베이스에서 업데이트된 데이터로 응용 프로그램 데이터 소스를 다시 로드해야 합니다. 예를 들어 TableAdapter.Fill 메서드를 호출하여 로컬 데이터베이스에서 업데이트된 데이터가 있는 데이터 집합의 데이터 테이블을 로드합니다.

동기화를 시작하려면

  • 이전 단원의 코드 예제 대화 상자에서 코드를 복사한 경우 이 코드를 응용 프로그램에 붙여넣을 수 있습니다. 그렇지 않은 경우 응용 프로그램에서 동기화 프로세스를 시작하려는 위치에 다음 코드를 삽입할 수 있습니다.

    ' Call SyncAgent.Synchronize() to initiate the synchronization process.
    ' Synchronization only updates the local database, not your project's data source.
    Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()
    
    ' Add code here to refill your application's data source
    ' with the updated data from the local database.
    
    // Call SyncAgent.Synchronize() to initiate the synchronization process.
    // Synchronization only updates the local database, not your project's data source.
    LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats =
    syncAgent.Synchronize();
    
    // Add code to refill your application's data source
    // with the updated data from the local database.
    

참고 항목

작업

연습: 필요에 따라 연결되는 응용 프로그램 만들기

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

개념

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

기타 리소스

필요에 따라 연결되는 응용 프로그램(로컬 데이터베이스 캐싱)