I'm looking for advices and suggestions on how to synchronise data between two databases.
The first database is a SQL Server 2008 Express that run on disconnected laptops (no network or internet access). The second database (main) is a VFP 9.0 that run on a server.
When the user connect their laptop on the network, I want the synchronisation process to go through.
Other than the different database engines, I have the following items to take into account:
1) The tables don't necessary have the same structure
2) The primary keys are not the same (GUID in the SQL Server and often a combination of character fields in VFP)
3) Synchronisation of the tables must be done in a certain order to respect the parent-child relationships
4) On some insert on the SQL Server side, a new primary key must be generated and synchronised in the VFP table
5) A bunch of validations must be made and some feedback from the user are sometimes needed
6) Not all records need to be synchronised
7) Some records on the SQL Server need to be deleted after the syncronisation
8) Need to take into account deleted records from both side
9) Minimal modifications need to be done on the VFP database
There are probably other points I'm forgotting now, but I think you get the idea of the challenge I face. My guess right now are that I will need to build a custom synchronisation module, but I want your input before I go on in case I overlooked some options and to get some tips on how to approach this.
I looked rapidly at Microsoft Sync Framework, but with all the restrictions I have and the fact that there is no VFP client already built (AFAIK), I don't think it will be of great help.
Thanks in advance for your feedback.
Update: The laptop application is a C# WinForm application and is using SQL Server 2008 Express.