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

Актуализиране на стъпка на задание за задача на агент на SQL Server (T-SQL)

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

Когато създавате задание на SQL Server Agent, създавате една или повече стъпки на заданието за това задание. sp_update_jobstep процедурата ви позволява да актуализирате конкретна стъпка на заданието, независимо от действителното задание или всякакви други стъпки на заданието.

Пример

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

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

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

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupMoviesDB',
    @description = N'Backup the Movies database.',
    @category_name = 'Database Maintenance';
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupMoviesDB',  
    @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'BackupMoviesDB',  
   @schedule_name = N'Run_Sat_5AM';
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupMoviesDB';
GO

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

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

EXEC sp_add_jobstep  
    @job_name = N'BackupMoviesDB',  
    @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;

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

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

Вече можем да използваме sp_update_jobstep за да промените горната стъпка на заданието.

EXEC sp_update_jobstep  
    @job_name = N'BackupMoviesDB',
    @step_id = 1,  
    @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 = 10,  
    @retry_interval = 5;

Единственото нещо, което този пример прави, е да увеличи опитите за повторен опит от 5 до 10 .

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

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

EXEC sp_update_jobstep  
    @job_name = N'BackupMoviesDB',
    @step_id = 1,
    @retry_attempts = 10;

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

Можете да използвате sp_help_job за да получите информация за заданията на SQL Server Agent в системата.

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

Като това:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

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

Ето пример за кода при използване на идентификатора:

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

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

Пример:

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

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

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

sp_update_jobstep   
     {   [@job_id =] job_id   
       | [@job_name =] 'job_name' } ,  
     [@step_id =] step_id  
     [ , [@step_name =] 'step_name' ]  
     [ , [@subsystem =] 'subsystem' ]   
     [ , [@command =] 'command' ]  
     [ , [@additional_parameters =] 'parameters' ]  
     [ , [@cmdexec_success_code =] success_code ]  
     [ , [@on_success_action =] success_action ]   
     [ , [@on_success_step_id =] success_step_id ]  
     [ , [@on_fail_action =] fail_action ]   
     [ , [@on_fail_step_id =] fail_step_id ]  
     [ , [@server =] 'server' ]   
     [ , [@database_name =] 'database' ]  
     [ , [@database_user_name =] 'user' ]   
     [ , [@retry_attempts =] retry_attempts ]  
     [ , [@retry_interval =] retry_interval ]   
     [ , [@os_run_priority =] run_priority ]  
     [ , [@output_file_name =] 'file_name' ]   
     [ , [@flags =] flags ]  
     [ ,  {   [ @proxy_id = ] proxy_id   
            | [ @proxy_name = ] 'proxy_name' }

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

Имайте предвид, че актуализирането на стъпка на задание увеличава номера на версията на заданието.


  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 2017

  2. Промяна на приоритета на акаунт в пощенски профил на база данни (SSMS)

  3. Премахване на идентичност от колона в таблица

  4. как да получите пълния набор от резултати от SSMS

  5. Запитване на SQL сървър за получаване на списъка с колони в таблица заедно с ограниченията типове данни, NOT NULL и PRIMARY KEY