sql >> Databáze >  >> RDS >> Sqlserver

Aktualizace kroku úlohy pro úlohu SQL Server Agent (T-SQL)

V SQL Server můžete použít sp_update_jobstep uložená procedura k úpravě existujícího kroku úlohy SQL Server Agent.

Když vytvoříte úlohu SQL Server Agent, vytvoříte pro tuto úlohu jeden nebo více kroků úlohy. sp_update_jobstep procedura vám umožňuje aktualizovat konkrétní krok úlohy nezávisle na skutečné úloze nebo jakýchkoli jiných krocích úlohy.

Příklad

V tomto příkladu vytvoříme úlohu s jedním krokem úlohy a poté použijeme sp_update_jobstep upravit krok úlohy.

Vytvořte úlohu

Nejprve vytvořte úlohu:

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

Výše uvedený kód používá pět uložených procedur, ale sp_add_jobstep postup je jediný, který obsahuje podrobnosti, které lze změnit pomocí sp_update_jobstep . Ostatní procedury mají své vlastní odpovídající „aktualizační“ procedury (např. sp_update_job a sp_update_schedule ).

Aby bylo jasno, následující část je část, kterou můžeme aktualizovat pomocí sp_update_jobstep postup.

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;

V tomto případě jsme při vytváření úlohy poskytli šest argumentů. Postup ve skutečnosti akceptuje mnohem více, ale pro naše účely to bude stačit.

Aktualizujte krok úlohy

Nyní můžeme použít sp_update_jobstep upravit výše uvedený krok úlohy.

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;

Jediná věc, kterou tento příklad dělá, je zvýšení počtu pokusů o opakování z 510 .

sp_update_jobstep uložená procedura změní pouze ta nastavení, pro která jsou dodány hodnoty parametrů. Pokud je parametr vynechán, aktuální nastavení zůstane zachováno.

Proto jsme v tomto případě mohli vynechat ostatní argumenty, jako je tento:

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

Zkontrolujte úlohu

Můžete použít sp_help_job získat informace o úlohách SQL Server Agent v systému.

Můžete ji použít s parametry nebo bez nich, ale abyste získali podrobnosti o kroku úlohy, musíte zadat název nebo ID úlohy.

Asi takto:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Takto vypadá výsledek při jeho spuštění v SSMS:

Zde je příklad kódu při použití ID:

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

Při použití ID můžete název parametru vynechat, chcete-li.

Příklad:

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

Úplná syntaxe

Úplná syntaxe sp_update_jobstep vypadá takto:

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' }

Viz dokumentaci společnosti Microsoft pro sp_update_jobstep pro vysvětlení každého parametru a také hodnot, které každý přijímá.

Všimněte si, že aktualizace kroku úlohy zvyšuje číslo verze úlohy.


  1. Používáte pojmenované instance? Otestujte připojení DAC!

  2. Příkaz CASE v klauzuli WHERE v SQL Server 2008

  3. Proč byla požadována neplatná konverze KÓD CHYBY:17132?

  4. Nainstalujte icu4c verze 63 s Homebrew