SQL Server Agent-scheman kan hanteras oberoende av jobb. Det betyder att du kan uppdatera schemat direkt utan att uppdatera själva jobbet.
Du kan göra detta med sp_update_schedule
lagrad procedur.
Exempel
Skapa schemat
Låt oss först skapa ett schema:
EXEC sp_add_schedule
@schedule_name = N'Weekly_Sat_1AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 10000;
Vi kan nu använda sp_update_schedule
för att ändra det schemat.
Uppdatera schemat
Här är ett exempel på uppdatering av schemat vi just skapade.
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 40000;
I det här fallet ändrade jag namnet på schemat, liksom frekvensintervallet och starttiden.
Observera att sp_update_schedule
ändrar endast de inställningar för vilka parametervärden tillhandahålls. Om en parameter utelämnas behålls den aktuella inställningen.
Därför, eftersom vissa av våra inställningar förblev desamma (särskilt @freq_type
och @freq_recurrence_factor
), kunde vi ha utelämnat dessa parametrar helt och hållet.
Så här:
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_interval = 1,
@active_start_time = 40000;
Inaktivera ett schema
Du kan ställa in @enabled
till 0
för att inaktivera ett schema.
Exempel:
EXEC sp_update_schedule
@name = N'Weekly_Sun_4AM',
@new_name = N'Weekly_Sun_4AM (DISABLED)',
@enabled = 0;
I det här exemplet ändrade jag också namnet för att göra det uppenbart att jobbet är inaktiverat.
Kontrollera schemat
Du kan använda sp_help_schedule
för att se de aktuella inställningarna för ett schema.
Du kan använda den med eller utan parametrar. När den används utan parametrar returnerar den alla scheman.
EXEC sp_help_schedule;
Om du bara vill se detaljerna för ett schema kan du ange schemats namn eller ID.
Så här:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM';
Men när du anger namnet måste du komma ihåg efternamnet som du gav schemat. I vårt fall, om vi kör den här proceduren efter föregående exempel (när vi inaktiverade schemat), skulle vi behöva göra detta:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM (DISABLED)';
Schemats ID förblir dock konstant, så du kan använda det oavsett schemats namn.
Exempel:
EXEC sp_help_schedule
@schedule_id = 16;
När du använder ID kan du utelämna parameternamnet om du vill.
Exempel:
EXEC sp_help_schedule 16;
Vad händer med jobb som använder det ändrade schemat?
Alla jobb som använder schemat använder omedelbart de nya inställningarna. Men att ändra ett schema stoppar inte jobb som körs för närvarande.
Full syntax
Den fullständiga syntaxen för sp_update_schedule
går så här:
sp_update_schedule
{ [ @schedule_id = ] schedule_id
| [ @name = ] 'schedule_name' }
[ , [ @new_name = ] new_name ]
[ , [ @enabled = ] enabled ]
[ , [ @freq_type = ] freq_type ]
[ , [ @freq_interval = ] freq_interval ]
[ , [ @freq_subday_type = ] freq_subday_type ]
[ , [ @freq_subday_interval = ] freq_subday_interval ]
[ , [ @freq_relative_interval = ] freq_relative_interval ]
[ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @active_start_time = ] active_start_time ]
[ , [ @active_end_time = ] active_end_time ]
[ , [ @owner_login_name = ] 'owner_login_name' ]
[ , [ @automatic_post =] automatic_post ]
Se Microsofts dokumentation för sp_update_schedule
för en förklaring av varje parameter, såväl som de värden som var och en accepterar.