/// <summary> /// Save any changes /// </summary> /// <returns>True if any changes were commited</returns> public bool ApplyChanges() { bool changesMade = UpdateSourceSchedule(); // save the changes. if (this.alreadyCreated) { source.Alter(); } else { source.Create(); // retrieving source.ID after creation would throw if the // server was in CaptureSql mode. This is because the schedule // id is not generated while capturing sql. Thus, we only query // id and set the created flag to true only when the smo object // is actually created and not scripted. Microsoft.SqlServer.Management.Smo.Server svr = null; if (this.parentJob != null && this.parentJob.Parent != null && this.parentJob.Parent.Parent != null) { svr = this.parentJob.Parent.Parent as Microsoft.SqlServer.Management.Smo.Server; } if (svr == null || SqlExecutionModes.CaptureSql != (SqlExecutionModes.CaptureSql & svr.ConnectionContext.SqlExecutionModes)) { this.id = source.ID; this.Created = true; } } return(changesMade); }
public void saveScheduleDetails(JobScheduleDetailsModel schedule) { ConnectSqlServer connection = new ConnectSqlServer(); Server dbServer = connection.Connect(schedule.ServerName); Job job = dbServer.JobServer.GetJobByID(schedule.JobID); JobSchedule scheduleToUpdate = job.JobSchedules[schedule.ScheduleUID]; if (schedule.Name != scheduleToUpdate.Name) { scheduleToUpdate.Rename(schedule.Name); scheduleToUpdate.Refresh(); } scheduleToUpdate.IsEnabled = schedule.IsEnabled; switch (schedule.ScheduleFrequency) { case "OneTime": scheduleToUpdate.FrequencyTypes = FrequencyTypes.OneTime; scheduleToUpdate.ActiveStartDate = schedule.OneTimeStartDate; scheduleToUpdate.ActiveStartTimeOfDay = schedule.OneTimeStartTimeOfDay; break; case "Daily": scheduleToUpdate.FrequencyTypes = FrequencyTypes.Daily; scheduleToUpdate.FrequencyInterval = schedule.DailyRecursEvery; scheduleToUpdate = setCommon(scheduleToUpdate, schedule); break; case "Weekly": scheduleToUpdate.FrequencyTypes = FrequencyTypes.Weekly; scheduleToUpdate.FrequencyRecurrenceFactor = schedule.WeeklyRecursEvery; scheduleToUpdate.FrequencyInterval = 0; if (schedule.WeeklySunday) { scheduleToUpdate.FrequencyInterval = +1; } if (schedule.WeeklyMonday) { scheduleToUpdate.FrequencyInterval = +2; } if (schedule.WeeklyTuesday) { scheduleToUpdate.FrequencyInterval = +4; } if (schedule.WeeklyWednesday) { scheduleToUpdate.FrequencyInterval = +8; } if (schedule.WeeklyThursday) { scheduleToUpdate.FrequencyInterval = +16; } if (schedule.WeeklyFriday) { scheduleToUpdate.FrequencyInterval = +32; } if (schedule.WeeklySaturday) { scheduleToUpdate.FrequencyInterval = +64; } scheduleToUpdate = setCommon(scheduleToUpdate, schedule); break; case "Monthly": scheduleToUpdate.FrequencyTypes = FrequencyTypes.Monthly; scheduleToUpdate.FrequencyRecurrenceFactor = schedule.MonthlyFrequency; scheduleToUpdate.FrequencyInterval = schedule.MonthlyDayNo; scheduleToUpdate = setCommon(scheduleToUpdate, schedule); break; case "MonthlyRelative": scheduleToUpdate.FrequencyTypes = FrequencyTypes.MonthlyRelative; if (schedule.MonthlyRelativeSubFreq == "Sunday") { scheduleToUpdate.FrequencyInterval = 1; } if (schedule.MonthlyRelativeSubFreq == "Monday") { scheduleToUpdate.FrequencyInterval = 2; } if (schedule.MonthlyRelativeSubFreq == "Tuesday") { scheduleToUpdate.FrequencyInterval = 3; } if (schedule.MonthlyRelativeSubFreq == "Wednesday") { scheduleToUpdate.FrequencyInterval = 4; } if (schedule.MonthlyRelativeSubFreq == "Thursday") { scheduleToUpdate.FrequencyInterval = 5; } if (schedule.MonthlyRelativeSubFreq == "Friday") { scheduleToUpdate.FrequencyInterval = 6; } if (schedule.MonthlyRelativeSubFreq == "Saturday") { scheduleToUpdate.FrequencyInterval = 7; } if (schedule.MonthlyRelativeSubFreq == "Weekdays") { scheduleToUpdate.FrequencyInterval = 9; } if (schedule.MonthlyRelativeSubFreq == "WeekEnds") { scheduleToUpdate.FrequencyInterval = 10; } if (schedule.MonthlyRelativeSubFreq == "EveryDay") { scheduleToUpdate.FrequencyInterval = 8; } switch (schedule.MonthlyRelativeSubFreq) { case "First": scheduleToUpdate.FrequencyRelativeIntervals = FrequencyRelativeIntervals.First; break; case "Second": scheduleToUpdate.FrequencyRelativeIntervals = FrequencyRelativeIntervals.Second; break; case "Third": scheduleToUpdate.FrequencyRelativeIntervals = FrequencyRelativeIntervals.Third; break; case "Fourth": scheduleToUpdate.FrequencyRelativeIntervals = FrequencyRelativeIntervals.Fourth; break; case "Last": scheduleToUpdate.FrequencyRelativeIntervals = FrequencyRelativeIntervals.Last; break; } scheduleToUpdate.FrequencyRecurrenceFactor = schedule.MonthlyRelativeFreq; scheduleToUpdate = setCommon(scheduleToUpdate, schedule); break; case "AutoStart": scheduleToUpdate.FrequencyTypes = FrequencyTypes.AutoStart; scheduleToUpdate.FrequencyInterval = 0; scheduleToUpdate.FrequencyRecurrenceFactor = 0; scheduleToUpdate.FrequencyRelativeIntervals = 0; scheduleToUpdate.FrequencySubDayInterval = 0; scheduleToUpdate.FrequencySubDayTypes = FrequencySubDayTypes.Unknown; break; case "OnIdle": scheduleToUpdate.FrequencyTypes = FrequencyTypes.OneTime; scheduleToUpdate.FrequencyInterval = 0; scheduleToUpdate.FrequencyRecurrenceFactor = 0; scheduleToUpdate.FrequencyRelativeIntervals = 0; scheduleToUpdate.FrequencySubDayInterval = 0; scheduleToUpdate.FrequencySubDayTypes = FrequencySubDayTypes.Unknown; break; } scheduleToUpdate.Alter(); scheduleToUpdate.Refresh(); }