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.