+4  A: 

Have a look at the Microsoft Sync Framework.

Introducing the Microsoft Sync Framework – a comprehensive synchronization platform enabling collaboration and offline for applications, services and devices with support for any data type, any data store, any transfer protocol, and network topology.

sacha
Hi Sacha, thanks for answering. One question for you though, without any research on my part: Does Sync Framework support peer to peer sync for SQL SERVER CE db?
virtualmic
Yes, read this post for more informations. http://dotnet.org.za/calmyourself/archive/2009/04/02/sql-express-change-tracking-framework-part-2.aspx
sacha
Actually, Sacha, the link you are referring to: Doesn't it show a server-CE sync, rather than a peer-to-peer sync. Please excuse me, if I am wrong, I am new at this.
virtualmic
+3  A: 

If there is a SQL Server (Standard or higher) already in place, you can use SQL Server Replication Services to sync local copies of the database to either a SQL Express or SQL Server Compact instance on the user's machine (both of these are free).

For more information, try here.

It sounds like you'd be looking at Merge replication scenario.

Adam Robinson
No Adam, there is absolutely no infra, so as to speak, in place already. We are using Foxpro as of now, and manually copy files around.. Very bad solution indeed... :) please do not judge me.
virtualmic
In that case, go with the Sync Framework that's described in sacha's answer. Good luck! No judgement here ;)
Adam Robinson
+6  A: 

Add -> New -> "Local Database Cache". This should provide all the sync you need (via ADO.NET Sync Framework), running (IIRC) by SQL CE by default, which is (I believe) free.

Marc Gravell
+2  A: 

Microsoft has a pattern for this they call Occasionally Connected Client.

Matt Brunell
+1  A: 

To the OP:

The one word of warning I will give you on the Sync framework front is upgrading a database schema throughout the versions. I'm using it on a project that I'm developing now, and am starting the "2.0" specification, which I've decided to remove it for various reasons.

I would greatly suggest you take the time to thing through the idea of how you wish to handle schema changes as you progress, and decide if this is the way that you want to go. For me, it was to get the system up and running, but now that I'm dealing with the nightmare, I'm falling victim to the NIH scenario.

My outlook for 2.0 is to continue to use SqlCE for the clients, and SQL Server 2008 for the COR... but to roll my own Sync Fx based on heavy usage of reflection and a set of "DTO" objects.

Richard B
Since I was planning for a new project, I have changed my approach altogether. Instead of going with a RDBMS, I am using db4objects. It has db4o<->db4o replication built in.
virtualmic
Yes, and RBDMS's like SQL Server have replication as well. The issue comes in when you are trying to deploy to a non-technical user that doesn't understand whether a kb is short for knowledge base or if it is referring to a kb of data. I can't imagine having someone that is an office manager launch dealprocessor, and then provide them with a SQL Server manual to get the syncronization working for their team... just doesn't seem possible.
Richard B