Comparing Synchronization Technologies
Microsoft offers several technologies that are designed for applications that run in occasionally connected environments. The most notable ones are as follows:
- Remote Data Access (RDA), which is used to synchronize a SQL Server Compact 3.5 database together with a database on another edition of SQL Server.
- Merge replication, which is used to synchronize different editions of SQL Server. This includes SQL Server Compact 3.5.
Note
Synchronization Services and any other synchronization technology cannot be used on the same table in the client database.
To determine which technology is appropriate for the applications that you are building, start with the following table, which outlines key features.
RDA | Merge Replication | Synchronization Services | |
---|---|---|---|
Synchronize using services |
No |
No |
Yes |
Supports heterogeneous databases |
No |
No |
Yes |
Incremental change tracking |
No1 |
Yes |
Yes |
Conflict detection and resolution |
No |
Yes |
Yes |
Easily create data views on the client |
No |
No |
Yes |
Automatically initialize schema and data |
Yes |
Yes |
Yes |
Supports large data sets |
Yes |
Yes |
Yes |
Query processor is locally available |
Yes |
Yes |
Yes |
Automatically propagate schema changes |
No |
Yes |
No |
Automatically repartition data |
No |
Yes |
No |
Use on devices |
Yes |
Yes |
Yes |
1 RDA supports incremental uploads, but downloads are always a snapshot that completely refreshes the data on the client.
Synchronization Services provides the flexibility of a programming model like offline datasets, with a richer synchronization feature set like that found in merge replication. The functionality of the Synchronization Services is superior to RDA.
Merge replication is targeted at the DBA, and is designed to synchronize SQL Server databases. It provides significant functionality out of the box, with configuration available through wizards, stored procedures, and its own API. Synchronization Services is targeted at the developer, and enables you to easily create views of data on the client based on a server database or another data source. Synchronization Services supports heterogeneous databases and synchronization over services, such as WCF. If your application involves synchronizing with non-SQL Server databases, or the application must be componentized to enable synchronization over different transports or services, use Synchronization Services.
For some applications, the decision to use a technology is easy: If you must synchronize a data source other than a SQL Server database, Synchronization Services is the way to go. If you are a database administrator who wants to configure synchronization without much programming, merge replication might be a better choice. Ultimately, you must look carefully at your application requirements and determine whether the Synchronization Services API is the appropriate technology to use. We think that if you are moving beyond replicating a schema and its data from one database to another, Synchronization Services is clearly the appropriate choice.