Beispiel #1
0
        public static void DataMoveReplicationConstraintFallBack(ITopologyConfigurationSession taskSession, Database database, DataMoveReplicationConstraintParameter constraint, out DataMoveReplicationConstraintParameter suggestedConstraint)
        {
            suggestedConstraint = constraint;
            switch (constraint)
            {
            case DataMoveReplicationConstraintParameter.None:
            case (DataMoveReplicationConstraintParameter)2:
                break;

            case DataMoveReplicationConstraintParameter.SecondCopy:
            case DataMoveReplicationConstraintParameter.AllCopies:
                if (database.ReplicationType == ReplicationType.None)
                {
                    suggestedConstraint = DataMoveReplicationConstraintParameter.None;
                    return;
                }
                break;

            case DataMoveReplicationConstraintParameter.SecondDatacenter:
            case DataMoveReplicationConstraintParameter.AllDatacenters:
                if (database.ReplicationType == ReplicationType.None)
                {
                    suggestedConstraint = DataMoveReplicationConstraintParameter.None;
                    return;
                }
                if (DatabaseTasksHelper.GetNumberOfDatacenters(taskSession, database) < 2)
                {
                    suggestedConstraint = DataMoveReplicationConstraintParameter.SecondCopy;
                    return;
                }
                break;

            default:
                switch (constraint)
                {
                case DataMoveReplicationConstraintParameter.CINoReplication:
                case (DataMoveReplicationConstraintParameter)65538:
                    break;

                case DataMoveReplicationConstraintParameter.CISecondCopy:
                case DataMoveReplicationConstraintParameter.CIAllCopies:
                    if (database.ReplicationType == ReplicationType.None)
                    {
                        suggestedConstraint = DataMoveReplicationConstraintParameter.CINoReplication;
                        return;
                    }
                    break;

                case DataMoveReplicationConstraintParameter.CISecondDatacenter:
                case DataMoveReplicationConstraintParameter.CIAllDatacenters:
                    if (database.ReplicationType == ReplicationType.None)
                    {
                        suggestedConstraint = DataMoveReplicationConstraintParameter.CINoReplication;
                        return;
                    }
                    if (DatabaseTasksHelper.GetNumberOfDatacenters(taskSession, database) < 2)
                    {
                        suggestedConstraint = DataMoveReplicationConstraintParameter.CISecondCopy;
                    }
                    break;

                default:
                    return;
                }
                break;
            }
        }