예제 #1
0
        /// <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();
                }
            }
        }
예제 #2
0
        /// <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.
            }
        }