Available with Standard or Advanced license.
For replicas in a disconnected environment, synchronization is achieved through a process of manually exchanging messages between replicas.
Two types of messages can be exchanged: data change messages and acknowledgment messages. Data change messages contain data changes, while acknowledgment messages acknowledge the receipt of data change messages. Replicas that are data senders send data change messages, while replicas that are data receivers send acknowledgment messages. See disconnected synchronization for more information.
Exporting data change messages
Data changes include new data changes and unacknowledged data changes. New changes are any inserts, updates, and deletes applied to the replica version since the last data change message was exported. Unacknowledged data changes include previously exported changes for which you have not received an acknowledgment. There are two commands available to export data change messages:
- Export Data Changes Message—By default, this command exports all new data changes and all unacknowledged data changes. You can choose whether or not to include new data changes or whether or not to include unacknowledged data changes. You can also choose to switch the replica from sender to receiver on export. If you choose to switch, a flag is added to the delta file that causes the relative replica to switch from receiver to sender on import.
- Re-export Unacknowledged messages—This command re-exports only unacknowledged data changes to a delta file. By default, all unacknowledged changes are included, but you can choose to only include the changes from the most recent export.
Exporting acknowledgment messages
An acknowledgment message acknowledges the receipt of data changes from the relative replica. Unless the relative replica receives an acknowledgment, it will resend the data changes. Adopting the practice of regularly sending and importing acknowledgment messages prevents you from having to resend changes. The export acknowledgment message command can be used to export acknowledgment messages.
The import message command can import either data change messages or acknowledgment messages. Importing an acknowledgment message updates a replica's metadata such that it knows what changes to include in the next export. Importing a data change message applies data changes from the relative replica and also updates the replica's metadata.
When importing a data change message, the synchronization version and the replica version are reconciled. During this reconcile operation, conflicts may occur. Before importing the message, you can choose a reconcile policy to define how to handle conflicts.
Reconcile policies include the following:
- Manual—With this policy, if a conflict occurs, the reconcile operation is aborted, and the replica is marked as in conflict. This gives you an opportunity to perform the reconcile operation afterwards either manually or by running some custom reconcile code. Once the data is reconciled and the changes are posted to the replica version, the replica is no longer in conflict. While the replica is in conflict, it can continue to receive changes but cannot send changes.
- In favor of the database—In this case, the representation of the database importing the changes is used over the changes in the delta file if there is a conflict. Since the conflicts are resolved automatically, the replica is never in a conflict state after synchronizing with this policy.
- In favor of the imported changes—Here, the representation defined by the imported changes are used over the replica's representation automatically if there is a conflict. Since the conflicts are resolved automatically, the replica is never in a conflict state after synchronizing with this policy.
The default is the option that favors the parent replica. Therefore, if importing changes on the child replica, the default is in favor of the imported changes. If importing changes on the parent replica, the default is in favor of the database.
Note that the reconcile options are similar to those offered for synchronizing connected replicas.
You can also choose between column level and row level conflict detection for this reconcile operation.
Learn more about Reconciling a version.