sql >> Databasteknik >  >> RDS >> Sqlserver

Ändra ett SQL Server Agent Schema (T-SQL)

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.


  1. Bifoga strängar i enstaka citattecken i SQLite-frågeresultat

  2. phpMyAdmin kastar en #2002 kan inte logga in på mysql-servern phpmyadmin

  3. Hur man får flera räkningar med en enda fråga i MySQL

  4. När körs SQLiteOpenHelper onCreate() / onUpgrade()?