Changes the origin of a set from one node to another. The new origin must be a current subscriber of the set. The set must currently be locked on the old origin.
After this command, the set cannot be unlocked on the old origin any more. The old origin will continue as a forwarding subscriber of the set and the subscription chain from the old origin to the new origin will be reversed, hop by hop. As soon as the new origin has finished processing the event (that includes any outstanding sync events that happened before, i.e. fully catching up), the new origin will take over and open all tables in the set for client application update activity.
This is not failover, as it requires a functioning old origin node (you needed to lock the set on the old origin). You would probably prefer to MOVE SET instead of FAILOVER, if at all possible, as FAILOVER winds up discarding the old origin node as being corrupted. Before MOVE SET will function a LOCK SET is needed.
Note that this is a locking operation, which means that it can get stuck behind other database activity.
- ID = ival
ID of the set to transfer
- OLD ORIGIN = ival
Node ID of the current set origin
- NEW ORIGIN = ival
Node ID of the new set origin
This uses schemadocmoveset( integer, integer ).
Exclusive locks on each replicated table will be taken out on both the old origin node and the new origin node, as replication triggers are changed on both nodes: on the former origin, each table has two triggers (logtrigger and lockset) dropped and a denyaccess trigger added; on the new origin, the denyaccess trigger is dropped and a logtrigger trigger added.