Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Промяна на задача на агент на SQL Server (T-SQL)

В SQL Server можете да използвате sp_update_job съхранена процедура за промяна на съществуващо задание на SQL Server Agent.

Пример

В този пример създаваме задание, след което използваме sp_update_job за да промените това задание.

Създайте работата

Първо, създайте заданието:

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BakMovies',
    @description = N'Backup the Movies database.',
    @category_name = 'Database Maintenance';
GO  
EXEC sp_add_jobstep  
    @job_name = N'BakMovies',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;
GO
EXEC sp_add_schedule 
    @schedule_name = N'Run_Sat_5AM',
    @freq_type = 8,
    @freq_interval = 64,
    @freq_recurrence_factor = 1,
    @active_start_time = 050000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BakMovies',  
   @schedule_name = N'Run_Sat_5AM';
GO  
EXEC sp_add_jobserver  
    @job_name = N'BakMovies';
GO

Горният код използва пет съхранени процедури, но sp_update_job процедурата актуализира само онези подробности, които са създадени с sp_add_job процедура. Другите процедури имат собствена съвпадаща процедура за „актуализация“.

Така че само за да е ясно, следващата част е частта, която можем да актуализираме с sp_update_job процедура.

EXEC sp_add_job  
    @job_name = N'BakMovies',
    @description = N'Backup the Movies database.',
    @category_name = 'Database Maintenance';

В този случай предоставихме само три аргумента при създаване на заданието. Процедурата всъщност приема много повече от това, но единственият задължителен аргумент е името на заданието.

Актуализирайте заданието

Вече можем да използваме sp_update_job за да промените горната задача.

EXEC sp_update_job  
    @job_name = N'BakMovies',
    @new_name = N'BackupMoviesDB',
    @description = N'Backup the Movies database.',
    @category_name = 'Database Maintenance';

Единственото нещо, което прави този пример, е да промени името на заданието.

sp_update_job съхранената процедура променя само тези настройки, за които са предоставени стойности на параметрите. Ако параметърът е пропуснат, текущата настройка се запазва.

Следователно в този случай бихме могли да пропуснем описанието и името на категорията:

EXEC sp_update_job  
    @job_name = N'BakMovies',
    @new_name = N'BackupMoviesDB';

Деактивиране на задание

Можете да деактивирате задание, като зададете @enabled до 0 :

EXEC sp_update_job  
    @job_name = N'BackupMoviesDB',
    @new_name = N'BackupMoviesDB (DISABLED)',
    @enabled = 0;

В този пример също промених името на заданието, за да стане ясно, че задачата е деактивирана.

Проверете работата

Можете да използвате sp_help_job за да видите текущите настройки на задание.

Можете да го използвате със или без параметри. Когато се използва без параметри, той връща всички задания.

EXEC sp_help_job;

Ако искате да видите подробностите само за една работа, можете да предоставите името или идентификатора на заданието.

Като това:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Ето как изглежда резултатът при изпълнението му в SSMS:

Въпреки че, когато предоставяте името, ще трябва да запомните фамилното име, на което сте дали работата. В нашия случай, ако изпълним тази процедура след предишния пример (когато сме деактивирали заданието), ще трябва да направим това:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB (DISABLED)';

Идентификационният номер на заданието обаче остава постоянен, така че можете да го използвате независимо от името на заданието.

Пример:

EXEC sp_help_job 
	@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';

Когато използвате идентификатора, можете да пропуснете името на параметъра, ако желаете.

Пример:

EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';

Какво се случва със стъпките, графика и т.н.?

Промяната на задание не нарушава информацията за стъпките и графика на това задание. Стъпките и графикът на заданието ще останат непокътнати, след като направите каквито и да е промени.

Ако трябва да промените стъпките или графика, ще трябва да използвате съответната съхранена процедура за тях (например, използвайте sp_update_schedule за да актуализира своя график и sp_update_jobstep за да актуализирате своята стъпка на заданието).

Пълен синтаксис

Пълният синтаксис на sp_update_job става така:

sp_update_job [ @job_id =] job_id | [@job_name =] 'job_name'  
     [, [@new_name =] 'new_name' ]   
     [, [@enabled =] enabled ]  
     [, [@description =] 'description' ]   
     [, [@start_step_id =] step_id ]  
     [, [@category_name =] 'category' ]   
     [, [@owner_login_name =] 'login' ]  
     [, [@notify_level_eventlog =] eventlog_level ]  
     [, [@notify_level_email =] email_level ]  
     [, [@notify_level_netsend =] netsend_level ]  
     [, [@notify_level_page =] page_level ]  
     [, [@notify_email_operator_name =] 'operator_name' ]  
     [, [@notify_netsend_operator_name =] 'netsend_operator' ]  
     [, [@notify_page_operator_name =] 'page_operator' ]  
     [, [@delete_level =] delete_level ]   
     [, [@automatic_post =] automatic_post ]

Вижте документацията на Microsoft за sp_update_job за обяснение на всеки параметър, както и стойностите, които всеки приема.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преглед на историята на заданията на агент на SQL Server с SSMS

  2. Топ 5 факта за намиране и замяна на SQL текстове в SQL Server с функция REPLACE

  3. кръстосаното прилагане на xml заявката работи експоненциално по-зле с нарастването на xml документа

  4. Разделяне на стойности, разделени със запетая, в колони на множество редове в Sql Server

  5. Как да изпълним .sql файл с помощта на powershell?