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; } }