다음을 통해 공유


테이블 스키마 사용

이 항목에서는 클라이언트 및 피어 데이터베이스에서 만드는 테이블 스키마를 사용하는 다양한 방법에 대해 설명합니다.

클라이언트 및 서버 동기화

Sync Framework는 클라이언트에 대한 초기 동기화 세션 중에 클라이언트 데이터베이스에 테이블을 만듭니다. 자세한 내용은 방법: 클라이언트 데이터베이스 초기화 및 테이블 스키마 사용을 참조하십시오. 테이블이 만들어진 후 일부 스키마 변경이 허용됩니다.

Sync Framework는 스키마 변경 내용을 서버에서 클라이언트로 자동 전파하지 않습니다. 서버에서 스키마 변경 내용을 처리하는 방법에 대한 자세한 내용은 응용 프로그램 배포 및 버전 관리를 참조하십시오. 클라이언트 데이터베이스에서는 다음과 같은 스키마 변경 내용이 지원됩니다.

  • 테이블 삭제. 다음 동기화 동안 수행되는 동작은 CreationOption에 대해 지정하는 값에 따라 달라집니다. 클라이언트에 테이블이 포함되지 않도록 하려면 SyncTableCollection에서 테이블을 제거합니다. 변경 추적 기능을 사용하도록 설정한 테이블을 삭제하면 해당 테이블에 대한 삭제 작업을 추적하는 시스템 테이블도 삭제됩니다. 그러므로 마지막 동기화 이후에 수행한 삭제 작업이 서버로 업로드되지 않습니다.

  • 새 열을 추가합니다.

  • 스냅숏 동기화에 포함되는 테이블의 열을 삭제합니다. 다른 유형의 동기화에 대해서는 이 변경이 지원되지 않습니다.

  • 인덱스를 추가 및 삭제하고 이름을 바꿉니다.

  • 기본 키 및 기타 제약 조건을 추가 및 삭제하고 이름을 바꿉니다.

  • 기본값을 수정합니다.

다른 모든 변경 내용은 지원되지 않으며 동기화 오류를 발생시킬 수 있습니다.

일부 응용 프로그램의 경우 클라이언트와 서버에서 스키마가 다릅니다. 아래 예제에서는 테이블의 동작과 Sync Framework에서 클라이언트의 해당 테이블을 업데이트하는 데 사용하는 ADO.NET 데이터 집합의 동작에 대해 간략하게 설명합니다.

  • 데이터 집합에 Column1Column2가 있고 테이블에 Column1, Column2, 및 Column3이 있으면 Column1Column2의 값이 적용되고 Column3은 기본값으로 설정되거나 기본값이 없는 경우에는 NULL로 설정됩니다.

  • 데이터 집합에 Column1, Column2Column3이 있고 테이블에 Column1Column2가 있으면 Column1Column2의 값이 적용되고 Column3은 무시됩니다.

  • 데이터 집합에 Column1, Column2Column3이 있고 테이블에 Column1, Column2Column4가 있으면 Column1Column2의 값이 적용되고 Column3은 기본값으로 설정되거나 기본값이 없는 경우에는 NULL로 설정되고 Column4는 무시됩니다.

피어 투 피어 동기화

피어 투 피어 동기화에서는 피어 데이터베이스의 자동 초기화를 제공하거나 각 피어에서 변경 내용 추적 인프라를 만들지 않습니다. 스키마 및 데이터 초기화에 대한 자세한 내용은 방법: 공동 작업 동기화 구성 및 실행(SQL Server 이외)에서 "서버 데이터베이스 초기화"를 참조하십시오. 피어 데이터베이스의 기본 테이블에 대한 스키마 변경에는 제한이 없습니다. 그러나 응용 프로그램에서는 스키마가 변경되는 경우 변경 내용을 선택하고 적용하는 명령을 업데이트해야 합니다. 예를 들어 테이블에 열을 추가하는 경우 해당 테이블에 변경 내용을 삽입하는 명령이 새 열을 포함하도록 업데이트되어야 합니다.

피어 투 피어 시나리오에서는 스키마가 피어 데이터베이스 간에 다를 수 있습니다. 예를 들어 첫 번째 피어의 테이블 스키마에서 읽기 쉽지 않은 숫자 열 이름을 사용하는 경우 다른 피어를 위해 DbSyncColumnMappingDbSyncColumnMappingCollection 개체를 사용하여 알기 쉬운 이름으로 열을 매핑할 수 있습니다.

참고 항목

개념

응용 프로그램 디자인 및 배포 고려 사항