2009-07-25 5 views
1

SQL 2005의 Microsoft Sync Framework? 가능한가? OOTB 공급자가 SQL2008 기능을 사용한다는 것을 암시하는 것 같습니다. 동기화 프로젝트와 관련하여 빠른 승리를 찾고 있습니다. 클라이언트 앱은 며칠 동안 오프라인 상태입니다. SQL Server 2005가되어야하는 중앙 서버가 있습니다. .net 3.5를 사용할 수 있습니다.스마트 클라이언트 응용 프로그램의 동기화 프레임 워크 고려 사항

기본적으로 클라이언트 앱은 일주일 동안 오프라인 상태가 될 수 있습니다. 온라인 상태가되면 데이터를 동기화해야합니다. 그러나 좋은 점은 데이터가 서버로 전달되어야한다는 것입니다. 클라이언트에 다시 동기화되는 항목은 클라이언트가 변경하지 않는 조회 데이터 일뿐입니다. 그래서 이것은 내가 동기화 충돌에 신경 쓰지 않는다는 것을 의미합니다.

시나리오를 단순화하기 위해이 스마트 클라이언트는 오프라인 상태가되며 사용자는 일부 관측에 대한 데이터를 조사합니다. 그들은 시스템에 데이터를 입력합니다. 랩톱이 네트워크에 다시 연결되면 해당 데이터를 모두 서버로 동기화합니다. 똑같은 일을하는 다른 고객도있을 것이지만, 아무도 서로의 데이터에 접촉하지 않습니다. 그런 다음 서버에 푸시 된 데이터를 보는 일부 보고서가 서버에 있습니다. 또한 ClickOnce를 사용해야합니다.

가장 큰 우려는 클라이언트가 오프라인 인 동안 임시 출시가 있다는 것입니다. 이 릴리스에는 데이터베이스에 새 필드가 필요하고 설문 조사에 기입 할 새 필드가 필요할 수 있습니다. 우리가 이전 데이터를 업데이트 할 수 없기 때문에 새로운 필드가 nullable이 될 수 있습니다. 이는 가정으로 설정하는 것이 좋습니다. 그러나 클라이언트가 연결되어 로컬 데이터 스키마와 서버 스키마가 일치하지 않으면 프레임 워크를 동기화 할 수 있습니까? 데이터가 서버에 푸시 된 후 로컬에서 삭제됩니다.

내 문제가 해결되기를 바랍니다.

답변

1

저는 충돌을 처리해야하는 응용 프로그램에 Microsoft Sync 프레임 워크를 사용하고 있으며 비참합니다. * .sdf 파일은 특정 스키마 변경 (예 : 열 삭제 등)에 대해 잠겨 있습니다.

Sync Framwork가 자동으로 작동하는 것처럼 들리는데, Sync Framework가 이러한 인스턴스에 삽입 문제를 야기하므로 참조 무결성을 적용하지 마십시오.

Sync Framework 포럼을 따라 간다면 스키마를 업데이트하는 것처럼 테이블이 끝까지 표시되는 방식으로 임시 테이블을 만들고 데이터를 복사 한 다음 이전 테이블을 삭제해야합니다. 다 끝나면 새 테이블의 이름을 바꿔야하며 동기화 클래스를 처리 할 수있는 SQL Server CE의 항목을 다시 연결하십시오.

IMHO, 저는 응용 프로그램에서 동기화 기능을 제거하는 작업을하고 있습니다. 보조 기능보다 방해가되기 때문입니다.

+0

감사합니다. 의견에 감사드립니다. 또한 SyncOne과 상관없이 ClickOnce가 스키마를 자동으로 업데이트한다는 사실을 알았습니다. 제 경우에는 중앙 서버에 새로운 nullable 필드를 추가하기 만하면됩니다. – DarkwingDuck

+0

ClickOnce는 데이터베이스 자동 업데이트를 어떻게 시작합니까? 나는이 시나리오를 아직 보지 못했고, 나는 꽤 흥미 롭다. –

+0

그래서 ClickOnce는 컴팩트 데이터베이스에 일부 변경 사항 만 안전하게 배포한다는 것을 알게되었습니다. 예를 들어 열을 제거하면 문제가 없습니다. 그러나 열을 추가하면 실제로 모든 로컬 데이터가 누출되었습니다. 그래서 내가 대신 한 것은 '동기화'프로세스 중에 앱이 데이터를 게시하도록 한 다음 배포를 업데이트하는 정적 메서드가있는 System.Deployment.CurrentDeployment 클래스를 호출하는 것입니다. 이것은 나를 위해 치료를했습니다. 그러나 WCF를 데이터베이스 (지원되는 Sync 프레임 워크 시나리오)의 프록시로 사용하면 계약을 버전화해야하므로 잘 작동하지 않을 수 있습니다. – DarkwingDuck

관련 문제