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
- Acknowledgment messages
Data change messages contain data changes, and acknowledgment messages acknowledge the receipt of data change messages. Replicas that are data senders send data change messages; replicas that are data receivers send acknowledgment messages. See Disconnected synchronization for more information including detailed illustrations of the disconnected synchronization message exchange workflow.
Export data change messages
Data changes include new data changes and unacknowledged data changes. New changes are 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, you can export all new data changes and all unacknowledged data changes. You can include new data changes, unacknowledged data changes, both, or neither. You can also switch the replica from sender to receiver on export. If you 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—You can reexport only unacknowledged data changes to a delta file. By default, all unacknowledged changes are included, but you can include only the changes from the most recent export.
Export 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 tool can be used to export acknowledgment messages.
The Import Message tool can import either data change messages or acknowledgment messages. Importing an acknowledgment message updates a replica's metadata such that it knows which 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.
Note:The import (data change messages) phase of the synchronization process occurs in a transaction. The second phase of a synchronization includes a reconcile operation, which also occurs in a transaction. Necessary resources, such as undo space or logical log files, vary with the number of changes to be synchronized. If the import phase completes but the reconcile phase results in an error, the replica will appear as if in conflict, and you can complete the reconcile operation manually later.
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 conflict resolution policy to define how to handle conflicts.
The following are the conflict resolution policies:
- Manual—If a conflict occurs, the reconcile operation stops, and the replica is marked as in conflict. This gives you an opportunity to perform the reconcile operation afterward, either manually or by running 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—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—The representation defined by the imported changes is 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.
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.