/// <summary> /// Switches all replicas within an availability group to SynchronousCommit state. /// </summary> /// <param name="availabilityGroupName">Availability group name</param> /// <param name="server">Name of server to check</param> static public void SetReplicasToSynchronousCommitMode(string availabilityGroupName, SMO.Server server) { AvailabilityReplicaCollection repCol = server.AvailabilityGroups[availabilityGroupName].AvailabilityReplicas; foreach (AvailabilityReplica replica in repCol) { if (replica.AvailabilityMode != AvailabilityReplicaAvailabilityMode.SynchronousCommit) { replica.AvailabilityMode = AvailabilityReplicaAvailabilityMode.SynchronousCommit; replica.Alter(); } } }
/// <summary> /// Sets asynchronous commit mode on primary replica /// </summary> /// <param name="availabilityGroupName">Availability Group Name</param> /// <param name="server">Server hosting the replica</param> static public void SetPrimaryReplicaToAsynchronousCommitMode(string availabilityGroupName, SMO.Server server) { AvailabilityReplicaCollection repCol = server.AvailabilityGroups[availabilityGroupName].AvailabilityReplicas; foreach (AvailabilityReplica replica in repCol) { if (replica.Role == AvailabilityReplicaRole.Primary) { if (replica.AvailabilityMode != AvailabilityReplicaAvailabilityMode.AsynchronousCommit) { replica.AvailabilityMode = AvailabilityReplicaAvailabilityMode.AsynchronousCommit; replica.Alter(); } break; } // TODO:Need to wait for secondary replica to switch to synchronizing state. } }