public static List <ServiceClientModel.SubProtectionPolicy> GetServiceClientSubProtectionPolicy( SQLRetentionPolicy retentionPolicy, SQLSchedulePolicy schedulePolicy) { List <ServiceClientModel.SubProtectionPolicy> subProtectionPolicy = new List <ServiceClientModel.SubProtectionPolicy>(); if (schedulePolicy.FullBackupSchedulePolicy != null && retentionPolicy.FullBackupRetentionPolicy != null) { subProtectionPolicy.Add(new ServiceClientModel.SubProtectionPolicy("Full", GetServiceClientSimpleSchedulePolicy(schedulePolicy.FullBackupSchedulePolicy), GetServiceClientLongTermRetentionPolicy(retentionPolicy.FullBackupRetentionPolicy))); } if (schedulePolicy.DifferentialBackupSchedulePolicy != null && retentionPolicy.DifferentialBackupRetentionPolicy != null && schedulePolicy.IsDifferentialBackupEnabled) { subProtectionPolicy.Add(new ServiceClientModel.SubProtectionPolicy("Differential", GetServiceClientSimpleSchedulePolicy(schedulePolicy.DifferentialBackupSchedulePolicy), GetServiceClientSimpleRetentionPolicy(retentionPolicy.DifferentialBackupRetentionPolicy))); } if (schedulePolicy.LogBackupSchedulePolicy != null && retentionPolicy.LogBackupRetentionPolicy != null && schedulePolicy.IsLogBackupEnabled) { subProtectionPolicy.Add(new ServiceClientModel.SubProtectionPolicy("Log", GetServiceClientLogSchedulePolicy(schedulePolicy.LogBackupSchedulePolicy), GetServiceClientSimpleRetentionPolicy(retentionPolicy.LogBackupRetentionPolicy))); } return(subProtectionPolicy); }
public SchedulePolicyBase GetDefaultSchedulePolicyObject() { SQLSchedulePolicy defaultSchedule = new SQLSchedulePolicy(); defaultSchedule.FullBackupSchedulePolicy = new CmdletModel.SimpleSchedulePolicy(); defaultSchedule.DifferentialBackupSchedulePolicy = new CmdletModel.SimpleSchedulePolicy(); defaultSchedule.LogBackupSchedulePolicy = new CmdletModel.LogSchedulePolicy(); defaultSchedule.IsDifferentialBackupEnabled = false; defaultSchedule.IsLogBackupEnabled = true; defaultSchedule.IsCompression = false; //Setup FullBackupSchedulePolicy defaultSchedule.FullBackupSchedulePolicy.ScheduleRunFrequency = CmdletModel.ScheduleRunType.Daily; DateTime scheduleTime = AzureWorkloadProviderHelper.GenerateRandomScheduleTime(); defaultSchedule.FullBackupSchedulePolicy.ScheduleRunTimes = new List <DateTime>(); defaultSchedule.FullBackupSchedulePolicy.ScheduleRunTimes.Add(scheduleTime); defaultSchedule.FullBackupSchedulePolicy.ScheduleRunDays = new List <System.DayOfWeek>(); defaultSchedule.FullBackupSchedulePolicy.ScheduleRunDays.Add(System.DayOfWeek.Sunday); //Setup DifferentialBackupSchedulePolicy defaultSchedule.DifferentialBackupSchedulePolicy.ScheduleRunFrequency = CmdletModel.ScheduleRunType.Weekly; defaultSchedule.DifferentialBackupSchedulePolicy.ScheduleRunTimes = new List <DateTime>(); defaultSchedule.DifferentialBackupSchedulePolicy.ScheduleRunTimes.Add(scheduleTime); defaultSchedule.DifferentialBackupSchedulePolicy.ScheduleRunDays = new List <System.DayOfWeek>(); defaultSchedule.DifferentialBackupSchedulePolicy.ScheduleRunDays.Add(System.DayOfWeek.Monday); //Setup LogBackupSchedulePolicy defaultSchedule.LogBackupSchedulePolicy.ScheduleFrequencyInMins = 120; return(defaultSchedule); }
public static void ValidateLongTermRetentionPolicyWithSimpleRetentionPolicy( SQLRetentionPolicy ltrPolicy, SQLSchedulePolicy schPolicy) { // for daily schedule, daily retention policy is required if (schPolicy.FullBackupSchedulePolicy.ScheduleRunFrequency == ScheduleRunType.Daily && (ltrPolicy.FullBackupRetentionPolicy.DailySchedule == null || ltrPolicy.FullBackupRetentionPolicy.IsDailyScheduleEnabled == false)) { throw new ArgumentException(Resources.DailyRetentionScheduleNullException); } // for weekly schedule, daily retention policy should be NULL // AND weekly retention policy is required if (schPolicy.FullBackupSchedulePolicy.ScheduleRunFrequency == ScheduleRunType.Weekly && (ltrPolicy.FullBackupRetentionPolicy.IsDailyScheduleEnabled != false || ltrPolicy.FullBackupRetentionPolicy.WeeklySchedule == null || (ltrPolicy.FullBackupRetentionPolicy.IsWeeklyScheduleEnabled == false))) { throw new ArgumentException(Resources.WeeklyRetentionScheduleNullException); } // validate daily retention schedule with schPolicy if (ltrPolicy.FullBackupRetentionPolicy.DailySchedule != null && ltrPolicy.FullBackupRetentionPolicy.IsDailyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.FullBackupSchedulePolicy.ScheduleRunTimes, ltrPolicy.FullBackupRetentionPolicy.DailySchedule.RetentionTimes); } // validate weekly retention schedule with schPolicy if (ltrPolicy.FullBackupRetentionPolicy.WeeklySchedule != null && ltrPolicy.FullBackupRetentionPolicy.IsWeeklyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.FullBackupSchedulePolicy.ScheduleRunTimes, ltrPolicy.FullBackupRetentionPolicy.WeeklySchedule.RetentionTimes); if (schPolicy.FullBackupSchedulePolicy.ScheduleRunFrequency == ScheduleRunType.Weekly) { // count of daysOfWeek should match for weekly schedule if (ltrPolicy.FullBackupRetentionPolicy.WeeklySchedule.DaysOfTheWeek.Count != schPolicy.FullBackupSchedulePolicy.ScheduleRunDays.Count) { throw new ArgumentException(Resources.DaysofTheWeekInWeeklyRetentionException); } // validate days of week ValidateRetentionAndScheduleDaysOfWeek(schPolicy.FullBackupSchedulePolicy.ScheduleRunDays, ltrPolicy.FullBackupRetentionPolicy.WeeklySchedule.DaysOfTheWeek); } } // validate monthly retention schedule with schPolicy if (ltrPolicy.FullBackupRetentionPolicy.MonthlySchedule != null && ltrPolicy.FullBackupRetentionPolicy.IsMonthlyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.FullBackupSchedulePolicy.ScheduleRunTimes, ltrPolicy.FullBackupRetentionPolicy.MonthlySchedule.RetentionTimes); // if backupSchedule is weekly, then user cannot choose 'Daily Retention format' if (schPolicy.FullBackupSchedulePolicy.ScheduleRunFrequency == ScheduleRunType.Weekly && ltrPolicy.FullBackupRetentionPolicy.MonthlySchedule.RetentionScheduleFormatType == RetentionScheduleFormat.Daily) { throw new ArgumentException(Resources.MonthlyYearlyInvalidDailyRetentionFormatTypeException); } // for monthly and weeklyFormat, validate days of week if (ltrPolicy.FullBackupRetentionPolicy.MonthlySchedule.RetentionScheduleFormatType == RetentionScheduleFormat.Weekly && schPolicy.FullBackupSchedulePolicy.ScheduleRunFrequency == ScheduleRunType.Weekly) { ValidateRetentionAndScheduleDaysOfWeek(schPolicy.FullBackupSchedulePolicy.ScheduleRunDays, ltrPolicy.FullBackupRetentionPolicy.MonthlySchedule. RetentionScheduleWeekly.DaysOfTheWeek); } } // validate yearly retention schedule with schPolicy if (ltrPolicy.FullBackupRetentionPolicy.YearlySchedule != null && ltrPolicy.FullBackupRetentionPolicy.IsYearlyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.FullBackupSchedulePolicy.ScheduleRunTimes, ltrPolicy.FullBackupRetentionPolicy.YearlySchedule.RetentionTimes); // if backupSchedule is weekly, then user cannot choose 'Daily Retention format' if (schPolicy.FullBackupSchedulePolicy.ScheduleRunFrequency == ScheduleRunType.Weekly && ltrPolicy.FullBackupRetentionPolicy.YearlySchedule.RetentionScheduleFormatType == RetentionScheduleFormat.Daily) { throw new ArgumentException(Resources.MonthlyYearlyInvalidDailyRetentionFormatTypeException); } // for yearly and weeklyFormat, validate days of week if (ltrPolicy.FullBackupRetentionPolicy.YearlySchedule.RetentionScheduleFormatType == RetentionScheduleFormat.Weekly && schPolicy.FullBackupSchedulePolicy.ScheduleRunFrequency == ScheduleRunType.Weekly) { ValidateRetentionAndScheduleDaysOfWeek(schPolicy.FullBackupSchedulePolicy.ScheduleRunDays, ltrPolicy.FullBackupRetentionPolicy.YearlySchedule. RetentionScheduleWeekly.DaysOfTheWeek); } } }