locked
Gurantee Synchorisation? RRS feed

  • Question

  •  

    I am looking for an alternative to MQ/Tibco ESB for sending data from a remote database to a central database.  The data will be captured at the remote database when it is offline.  However, once connected back to the network, data is sent/sync with the central database.

     

    Does the Microsoft Sync Framework allow multiple remote databases which may contain different data to gurantee synchronisation with the central database?

     

    The key is guranteed delivery or in this case guranteed synchronisation.

     

    Thanks

    Chris

     

     

    Thursday, January 10, 2008 4:06 AM

Answers

  • Hi Chris,

     

    When you say guarantee, I think you are asking whether we can guarantee that the data will eventually get uploaded.  Correct?  For example, if you are uploading data changes and the network drops half way through synchronization obviously we can not guarantee that all the data is uploaded during that session.  However, what we can do is guarantee that we will resend the changes that were not successfully uploaded during the previous network disconnect. 

     

    I think you will want to take a look at Sync Services for ADO.NET which is a component of the Microsoft Sync Framework.  This technology will allow you to synchornize information from multiple remote databases to a central database. 

     

    Steve Lasker has some great synchornization presentations on his blog on how to get started using Sync Services using Visual Studio.

     

    I hope that helps.

     

    Liam

    Thursday, January 10, 2008 6:13 PM

All replies

  • Hi Chris,

     

    When you say guarantee, I think you are asking whether we can guarantee that the data will eventually get uploaded.  Correct?  For example, if you are uploading data changes and the network drops half way through synchronization obviously we can not guarantee that all the data is uploaded during that session.  However, what we can do is guarantee that we will resend the changes that were not successfully uploaded during the previous network disconnect. 

     

    I think you will want to take a look at Sync Services for ADO.NET which is a component of the Microsoft Sync Framework.  This technology will allow you to synchornize information from multiple remote databases to a central database. 

     

    Steve Lasker has some great synchornization presentations on his blog on how to get started using Sync Services using Visual Studio.

     

    I hope that helps.

     

    Liam

    Thursday, January 10, 2008 6:13 PM
  • Thanks for the reply.

     

    Yes - I am asking whether you can guarantee that the data will eventually get uploaded once connection is re-established.  And your answer seems to indicate yes - as long the connection is there long enough to upload all the data in a session.  ie.  You are guranteeing that the databases will be synchronised (assuming a connection) regardless of the number of times of drop outs and failed synchronisation in the past.

     

    If this is the case, then I have another question -

     

    If I have several remote databases (at remote sites) that have different data that connect to the same central database, then would changes at one remote database make it to another remote database?  Is this configurable/programmable?

     

    I am looking at a way to have one central database, but the data at each remote database could be different (eg data is keyed on a field which identifies which remote location/database it belongs to).  I don't want some data at the remote databases appearing at other remote databases.  There will be some data common across remote databases, but some will be applicable only to a specific remote database.  I hope this makes sense.

     

    Thanks again.


     

     

     

     

    Thursday, January 10, 2008 10:44 PM
  • Great question Christopher!  Looks like you are targeting a bi-directional sync scenario which we oftentimes refer to as our offline scenarios.  To restate, you would like to make changes on any of your remote databases, sync those changes up to the server and sync those changes down to all remote databases.  Yes, we support this scenario.  The SyncTable class has a property called SyncDirection that defaults to download only.  You would have to override that default behavior.  In addition, you would also need to account for conflicts and define the means by which to resolve them.  Liam posted a great video describing how this can be done here:

     

    http://download.microsoft.com/download/6/7/3/6730f0e7-a649-4656-96ab-150c7501a583/IntroToSyncServicesADODetNet_HighQuality.wmv

     

     

    You may also want to leverage the client ID to avoid loopbacks (i.e. I don't need to pull down changes from the server that I originally made).

     

    Let me know if you have additional questions.

     

    Sean Kelley

    Program Manager

    Data Replication and Synchronization

     

     

     

    Tuesday, January 29, 2008 9:10 PM
    Moderator
  • I reread your response and noticed the following comment:

     

    I don't want some data at the remote databases appearing at other remote databases.  There will be some data common across remote databases, but some will be applicable only to a specific remote database. 

     

    You could use filtering to achieve this.  There is a great section in the help docs that describes how one would go about implementing filtering entitled "How to: Filter Rows and Columns".  Take a look and let me know if you have questions.

     

    -Sean

     

     

     

    Tuesday, January 29, 2008 9:17 PM
    Moderator