How To: Reconcile multiple versions simultaneously using IVersionEdit2


An organization's work flow may require the ability to simultaneously reconcile multiple versions against a common parent. ArcMap and geodatabase tools limit one version at any time from being reconciled, with a common parent version, by enforcing geodatabase object locks.

An exclusive geodatabase object lock is obtained on the source and target version when the reconcile process is started. This prevents other users from editing the source version and reconciling against the target version.

For example, two users cannot reconcile their respective versions with the default version at the same time. This behavior is implemented in ArcGIS by design. The intention is not to allow multiple reconciles to run concurrently to save system (server and client) resources.

The geodatabase also enforces this behavior because only one version can be posted to a target version to ensure data consistency. If the software would allow multiple versions to be reconciled and posted simultaneously, the second version would simply overwrite the changes applied by the previous version that performed the post.

While the design is intended to save system resources and guarantee data integrity, some organizations may still want to perform multiple reconciles simultaneously. This can be achieved by using IVersionEdit2:Reconcile2, while still ensuring data integrity.


Your organization, for example, may want to reconcile multiple versions simultaneously when the user's intention is not to perform a post after the reconcile process. The user simply wants to merge the current version with the target version.

You can do this with the IVersionEdit2:Reconcile2 method, which is similar to the IVersionEdit:Reconcile method but has an additional Boolean argument: if the reconcile should obtain the geodatabase object lock or not. If the lock is not obtained, the version can still be posted, but there will be no guarantee that the target version has not been modified and saved since the reconcile completed. In this case, an error will be raised informing you that the version has been redefined. This error implies that you will need to re-execute the reconcile.

This brief example demonstrates the use of IVersionEdit2:Reconcile2:

Dim pNewVersion As IVersionEdit2
Set pNewVersion = pWS

Dim Success As Boolean
Success = pNewVersion.Reconcile2("SDE.DEFAULT", false)

The above reconciles the current workspace version against the default version. It has set the acquireLock Boolean to false, meaning it will not acquire a geodatabase object lock on the target version, or fail if the default version is currently being reconciled by a second process. The returned Boolean value, success, indicates whether conflicts were detected or not.