답변됨 SQL Server Change Tracking in v3?

  • domingo, 29 de agosto de 2010 19:12
     
     
    Hi there!

    What kind of change tracking is employed on the server side in this version? Does the sync service utilize the Change Tracking feature in SQL Server 2008 and above, or does create its own tables metadata and tracking?

    Thanks!
    Daniel Stolt, Perceptible, http://www.perceptible.net

Todas las respuestas

  • lunes, 30 de agosto de 2010 7:09
     
     
    When provisioning a target database some metadata tables and a set of stored procedures is created to handle the tracking.
  • lunes, 30 de agosto de 2010 19:32
    Propietario
     
     
    We create our own metadata tables and stored procs - we do not utilize the Change Tracking feature.
  • lunes, 30 de agosto de 2010 22:12
     
     

    I see.

    Can you share any information as to what drove the decision to not use Change Tracking for SyncFx? Do you think it will be possible in the v3 RTM timeframe for us to write our own custom provider that might utilize Change Tracking instead?


    Daniel Stolt, Perceptible, http://www.perceptible.net
    • Editado Daniel Stolt lunes, 30 de agosto de 2010 22:13 Added question.
    •  
  • martes, 31 de agosto de 2010 20:13
    Moderador
     
     Respondida

    The Peer to Peer provider model supports many features which requires extra metadata tracking. Adding ChangeTracking as an option invalidates some scenarios. Utilizing change tracking still required a side table for tracking non primary key tombstones which meant DML triggers were required. After analyzing all factors (scale/perf/engineering complexity) we decided not to support for the current release. Having said that its not a done deal and is in constant consideration based on customer needs and requests.


    Maheshwar Jayaraman - http://blogs.msdn.com/mahjayar
    • Marcado como respuesta Daniel Stolt jueves, 02 de septiembre de 2010 0:35
    •  
  • martes, 31 de agosto de 2010 23:57
    Propietario
     
     Respondida

    Hi Daniel,

     

    We looked at SQL Server 2008 Change Tracking (SQLCT) as a feature to be included in vNext and it was scoped out of the release primarily due to the following reasons:

     

    1.     Customer Value has been eroded due to improvements in the SQL engine and SyncFx

    2.     Fairly large performance regressions when leveraging SQLCT

    3.     Opportunity cost of pursuing other frequent customer asks was high

    Regarding #1, SQLCT automatically adds all of the DB objects required for sync and we have subsequently built this capability into our provisioning API along with the cleanup of tombstones and the handling of overlapping transactions.  Also, while SQLCT eliminates the need for triggers, the performance of triggers have improved enough such that the DML impact gap between SQLCT and custom CT is now fairly small. 

     

    Regarding #2, we have begun leveraging SQL Server 2008 TVPs to improve the performance of applying changes drastically i.e. sync times are reduced by 40%-60%.  Leveraging SQLCT eliminates all of these performance improvements as it does not allow us to leverage TVPs. 

     

    Regarding #3, there are a handful of features with a significantly larger number of votes and we felt that we would best serve customers by focusing on one or more of those features instead.  Feature voting can be found here:

    http://www.mygreatwindowsazureidea.com/forums/44459-sql-azure-data-sync-feature-voting

     

    Let me know if this helps. Obviously not the answer that you were looking for.  It would help to understand why SQLCT support is important to you specifically that the custom CT can’t satisfy. 

     

     

     


    This posting is provided "AS IS" with no warranties, and confers no rights.

     

    • Marcado como respuesta Daniel Stolt jueves, 02 de septiembre de 2010 0:35
    •  
  • jueves, 02 de septiembre de 2010 0:41
     
     

    Maheshwar and Nina,

    Thanks for your excellent answers, they clarify a lot! To answer your question, SQLCT is not important to me per se, as long as the custom tracking model employed is well designed and performant. I've just been burned a little by the hopelessly complex CT model employed by merge rep, I guess, and with SQLCT seemingly eliminating that complexity, it might seem at first glance like another custom CT model is the last thing we need. It helps to know that you have descoped SQLCT for good reason, and that your own CT is light weight yet fairly sophisticated.


    Daniel Stolt, Perceptible, http://www.perceptible.net
    • Editado Daniel Stolt jueves, 02 de septiembre de 2010 0:42 Typo.
    •  
  • miércoles, 08 de diciembre de 2010 20:05
     
     
    If this is the case, Microsoft will want update their documentation that recommends the use of change tracking with Sync Services for high performance tracking.  Honestly, one goes around in circles trying to figure out this technology with these contradictions.
    JeffGWM
  • lunes, 24 de octubre de 2011 6:14
     
     

    Hi Nina

    I'm so confused, Could you please check this link

    http://msdn.microsoft.com/en-us/sync/bb887608

    Regarding to this link  Sync framework should support SQLCT, if not ,Please someone correct it.

    of course I could not find any publishing date on that topic.

  • lunes, 24 de octubre de 2011 6:36
    Moderador
     
     

    Sync Framework has two types of database providers.

    The so called offline provider (SqlCeClientSyncProvider/DbServerSyncProvider/Sync Agent) which is the one used by the Visual Studio Local Database Cache project item.

    Then there's the collaboration/peer-to-peer provider (SqlCeSyncProvider/SqlSyncProvider/SyncOrchestrator).

    the former is used for hub-spoke topology, with clients synching to a central copy and uses anchors to store what it has received and sent (normally a timestamp).

    the latter works in hub-spoke/peer-to-peer topologies and stores what it received and from which replica in what it calls sync knowledge.

    SQL CT is supported in the offline provider but not in the collaboration/peer-to-peer provider.

    If your question is if SQL CT is supported, it still is if you want to use the offline providers.