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:
- The tables don't necessary have the same structure
- The primary keys are not the same (GUID in the SQL Server and often a combination of character fields in VFP)
- Synchronisation of the tables must be done in a certain order to respect the parent-child relationships
- On some insert on the SQL Server side, a new primary key must be generated and synchronised in the VFP table
- A bunch of validations must be made and some feedback from the user are sometimes needed
- Not all records need to be synchronised
- Some records on the SQL Server need to be deleted after the syncronisation
- Need to take into account deleted records from both side
- 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.