Hi Mahmoud,
Your only option is replication - nothing else (from the techniques delivered out of the box) will allow you to update at the remote branch sites.
Even if your branch offices were local I would recommend you to replicate to other servers for reporting - simply because OLTP and reporting activities don't mix well performance wise.
You have to choose between Transactional and Merge Replication (peer to peer is only available in Enterprise Edition):
- Both of them allow you to have bi-directional replication, i.e. data can be updated and replicated between Publisher and Subscribers.
- Both of them can "queue" replicated data in case your WAN is down
So which one to choose? Generally, Transactional replication is used in server to server replication and Merge Replication in "loosely coupled" scenarios (the typical example is Sales people with laptops).
General rules for choosing Transactional Replication:
- You want incremental changes to be propagated to Subscribers as they occur.
- You need transactions to adhere to ACID properties (merge replication does not replicate transactions; it replicates commands)
- Subscribers are reliably and/or frequently connected to the Publisher.
Merge Replication:
- Multiple Subscribers need to update data at various times and propagate those changes to the Publisher and to other Subscribers.
- Subscribers need to receive data, make changes offline, and later synchronize changes with the Publisher and other Subscribers.
- You do not expect many conflicts when data is updated at multiple sites (because the data is filtered into partitions and then published to different Subscribers or because of the uses of your application). However, if conflicts do occur, violations of ACID properties are acceptable.
Another important thing is that with Transactional replication, you can only solve conflicts in 2 ways; either the Publisher always wins or the Subscriber always wins (there is a 3rd, reinitialization but that is usually not feasible). In Merge Replication you have a range of different Conflict resolvers you can choose from.
Depending on what your transactions look like, you might get less traffic with Merge Replication because you can choose column-level tracking. With column-level tracking, only the updated columns are replicated not the entire row. This is not going to help you if you have mainly deletes and inserts or typically update several or most columns.
HTH
/Elisabeth