SQL Server Change Tracking in v3?
-
2010年8月29日 19:12Hi 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
すべての返信
-
2010年8月30日 7:09When provisioning a target database some metadata tables and a set of stored procedures is created to handle the tracking.
-
2010年8月30日 19:32所有者We create our own metadata tables and stored procs - we do not utilize the Change Tracking feature.
-
2010年8月30日 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- 編集済み Daniel Stolt 2010年8月30日 22:13 Added question.
-
2010年8月31日 20:13モデレータ
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- 回答としてマーク Daniel Stolt 2010年9月2日 0:35
-
2010年8月31日 23:57所有者
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.- 回答としてマーク Daniel Stolt 2010年9月2日 0:35
-
2010年9月2日 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- 編集済み Daniel Stolt 2010年9月2日 0:42 Typo.
-
2010年12月8日 20:05If 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 -
2011年10月24日 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.
-
2011年10月24日 6:36モデレータ
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.