방법: 스냅숏, 다운로드, 업로드 및 양방향 동기화 지정
Sync Framework은 스냅숏, 다운로드, 업로드 및 양방향 동기화를 지원합니다. Sync Framework에서는 융통성 있는 옵션이 제공되므로 각 테이블에 대해 서로 다른 동기화 형식을 지정할 수 있습니다. 자세한 내용은 클라이언트 및 서버 동기화에 대한 아키텍처 및 클래스를 참조하십시오.
또한 이 항목에서는 각 동기화 형식에 필요한 속성에 대한 개요를 제공합니다. 이 섹션의 항목에서는 여러 동기화 형식을 구성하는 방법에 대해 설명하고 코드 예제를 제공합니다.
섹션 내용
동기화 방향을 결정하는 속성
테이블에 대해 사용하는 동기화 형식은 SyncAdapter에서 설정하는 동기화 명령과 SyncTable의 SyncDirection 속성에 따라 달라집니다. 동기화 명령은 동기화할 수 있는 데이터를 결정하고 SyncDirection 속성은 특정 세션에 대해 실제로 동기화되는 데이터를 결정합니다. 보통 이 두 데이터는 같습니다. 예를 들면 양방향 동기화를 지정하고 해당 동기화를 지원하는 명령을 지정하게 됩니다. 그러나 한 방향으로만 동기화하려는 경우도 있습니다. 예를 들어 영업 사원에게는 제품 데이터에 대한 다운로드 전용 액세스가 필요하고 관리자에게는 해당 데이터를 원격으로 업데이트할 수 있는 기능이 필요한 경우가 있습니다. 양방향 동기화를 위해 SyncAdapter 명령을 지정할 수 있습니다. 그러나 SyncDirection 속성은 영업 사원에 대해 다운로드 전용으로 설정됩니다.
동기화 방향을 지정하려면 SyncDirection 속성을 SyncDirection 열거형의 다음 값 중 하나로 설정합니다.
그런 다음 각 테이블에 대해 SyncAdapter의 명령 집합을 수동으로 지정하거나 SqlSyncAdapterBuilder를 사용하여 해당 명령을 생성합니다. 또한 다운로드 전용 및 양방향 동기화의 경우에는 증분 데이터 변경 내용을 추적하도록 서버를 구성해야 합니다. 자세한 내용은 서버 데이터베이스의 변경 내용 추적를 참조하십시오.
명령을 수동으로 만드는 경우에는 SyncAdapter에서 다음 중 일부 또는 전체 속성을 설정하게 됩니다.
SelectIncrementalInsertsCommand. 모든 종류의 동기화에 사용되는 속성으로, 서버 데이터베이스에서 검색하는 명령을 지정합니다. 즉, 스냅숏, 다운로드 전용 및 양방향 동기화의 경우에는 초기 삽입 명령을 검색하고, 다운로드 전용 및 양방향 동기화의 경우에는 증분 삽입 명령을 검색합니다. 기본적으로 모든 종류의 동기화에 대해 이 명령은 서버 데이터베이스에서 테이블 스키마도 검색합니다. 스키마 만들기 및 삽입은 SqlCeClientSyncProvider가 클라이언트에 적용합니다.
SelectIncrementalUpdatesCommand 및 SelectIncrementalDeletesCommand. 다운로드 전용 및 양방향 동기화에 사용되는 속성으로, SqlCeClientSyncProvider에서 업데이트 및 삭제를 클라이언트에 적용할 수 있도록 서버에서 업데이트 및 삭제를 검색하는 명령을 지정합니다.
InsertCommand, UpdateCommand 및 DeleteCommand. 업로드 전용 및 양방향 동기화에 사용되는 속성으로, 클라이언트에서 수행한 삽입, 업데이트 및 삭제 내용을 서버에 적용하는 명령을 지정합니다.
SelectConflictUpdatedRowsCommand 및 SelectConflictDeletedRowsCommand. 보통 양방향 동기화에 사용되는 속성으로, 서버에서 업데이트 및 삭제 충돌을 검색하는 명령을 지정합니다. 자세한 내용은 방법: 데이터 충돌 및 오류 처리를 참조하십시오.
동기화 명령을 수동으로 지정하는 경우 해당 명령 및 클라이언트에서 업로드되는 변경 내용 유형을 보다 자세하게 제어할 수 있다는 장점이 있습니다. 예를 들어 양방향 동기화를 수행하지만 클라이언트에서 삭제 내용은 업로드하지 않으려는 경우에는 DeleteCommand 속성에 대해 명령을 지정하지 않으면 됩니다. SqlSyncAdapterBuilder에서 생성되는 명령보다 복잡한 수동 명령의 예제를 보려면 방법: 데이터 충돌 및 오류 처리를 참조하십시오.
SqlSyncAdapterBuilder가 명령을 생성하도록 하는 경우에는 SyncDirection 속성을 설정합니다. 이 속성은 SyncAdapter 명령 중 테이블에 대해 생성할 명령을 결정합니다. 스냅숏 및 업로드 전용 동기화의 경우에는 이 속성만 설정하면 됩니다. 다운로드 전용 및 양방향 동기화의 경우에는 변경 내용을 추적하는 데 사용할 서버의 열 및 데이터를 필터링해야 하는지 여부를 식별하는 속성도 설정해야 합니다. 이러한 속성은 다음과 같습니다.
SqlSyncAdapterBuilder는 이러한 속성에 대해 지정한 필터 값 및 열을 기반으로 하여 적절한 명령을 생성합니다.
동기화 방향 변경
테이블을 동기화한 후에는 다른 동기화 방향을 지정할 수 있습니다. 그러나 스냅숏 동기화의 경우에는 클라이언트 데이터베이스에서 변경 내용 추적 기능을 사용할 수 없습니다. 응용 프로그램의 특정 지점에서 데이터의 변경 내용을 추적해야 하는 경우에는 스냅숏 동기화를 구성하지 않는 것이 좋습니다. 스냅숏 동기화를 구성한 후에 다른 동기화 유형으로 변경하려는 경우에는 변경 내용 추적과 관련된 다음과 같은 문제에 주의해야 합니다.
스냅숏 동기화를 구성한 다음 다운로드 전용 또는 양방향 동기화로 변경하는 경우:
서버측의 행이 다시 선택되어 다운로드될 수 있습니다. 그러면 다운로드 단계 중에 충돌이 발생할 수 있습니다.
스냅숏 동기화를 구성하고 클라이언트 데이터베이스에서 변경한 다음 업로드 전용 또는 양방향 동기화로 변경하는 경우:
클라이언트 데이터베이스의 변경 내용이 업로드되지 않습니다. 이러한 변경 내용을 업로드해야 하는 경우에는 변경된 각 행에 대해 더미 업데이트를 수행해야 합니다.
스냅숏 동기화를 구성하고 업로드 전용 또는 양방향 동기화로 변경한 다음 클라이언트 데이터베이스에서 변경하는 경우:
업로드 단계 중에 충돌이 발생할 수 있습니다.