1

SQL Server Express를 실행하는 여러 개의 클라이언트와 SQL Server 엔터프라이즈를 실행하는 1 개의 중앙 서버가 있습니다. Microsoft 동기화 프레임 워크를 사용하여 로컬 데이터베이스를 중앙에 동기화하려고합니다. 예를 들어 로컬 시스템 중 하나가 손상되어 중앙 서버에서 데이터를 복원하려고합니다. 내가 어떻게 해? 참고 : 다른 클라이언트의 데이터가 다르므로 데이터 분리가 필요합니다. 모든 중앙 서버를 로컬 클라이언트에 복원 할 수 없습니다. 로컬 데이터 만 복원하고 싶습니다. 이를 위해 중앙 서버가 어떤 로컬 사이트에서 데이터가오고 있는지 추적하지 않기 때문에 Microsoft 동기화를 사용할 수 없습니다. 궁극적으로 로컬 서버를 중앙 서버 및 중앙 서버와 동기화하여 실패시 로컬 서버를 복원하려고합니다.중앙 데이터베이스에서 로컬 데이터베이스를 복원하는 방법

+0

왜 클라이언트에서 오는 데이터에 대한 클라이언트 ID를 추가하지 않습니까? 그런 다음 clientid를 기반으로 필터링 된 범위를 만드시겠습니까? – JuneT

+0

그건 옵션이지만 비즈니스 요구에 따라 클라이언트와 서버의 데이터베이스 스키마는 동일해야합니다. 따라서 서버에 clientID 열이 있으면 쓸모없는 클라이언트에 바인딩해야합니다. 그것은 단지 나쁜 디자인입니다 – user3057235

+0

왜 쓸모가 없을까요? 당신은 그것을 사용하여 데이터가 어디에서 왔는지 식별합니다. imho, 어디서 왔는지 식별 할 수 없어도 데이터를 동기화하는 것이 최악의 설계입니다. – JuneT

답변

0

타임 스탬프와 데이터의 uniqueId가있는 테이블에 클라이언트 ID를 저장할 수 있습니다. 트리거는이 데이터를 클라이언트 ID 테이블에 기록 할 수 있습니다. 이렇게하면 클라이언트가 데이터베이스에 업로드 한 데이터의 추적을 유지하고 동기화 프레임 워크에 대해 uploadonly 옵션으로 설정할 수 있습니다. 따라서 해당 테이블의 서버에서 데이터가 다운로드되지 않습니다. 또한 클라이언트로 다운로드하는 동안 데이터 다운로드를위한 필터를 가질 수 있습니다.

이 뭔가를 할 수 있습니다

:

syncAgent.ClientData.SyncDirection = SyncDirection.UploadOnly;

관련 문제