Существует ли надежный способ определения времени, в течение которого агент sql будет работать в течение заданного периода времени?
У меня есть объект Microsoft.SqlServer.Management.Smo.Agent.Job
но вы хотите избежать повторного создания логики для вычисления времени выполнения на основе его расписаний. Я надеюсь, что для этого есть встроенная функциональность.
Нет, к сожалению, нет. И это сложнее обнаружить это, когда ваша работа имеет несколько графиков.
Однако для простого случая, когда у вас всего 1 расписание, я думаю, вы можете сделать следующее:
NextRunDate
задание для своего NextRunDate
ActiveStartDate
на следующую дату запуска.ActiveStartDate
установлен в исходное значение.Вы можете сделать это только один раз, когда работа будет создана, и сохранить результаты. Таким образом, вы исключаете риск изменения задания каждый раз, когда вам нужно оценить время выполнения (потому что изменение ActiveStartDate фактически изменит расписание).