sql >> Databasteknik >  >> RDS >> Sqlserver

Uppdatera ett jobbsteg för ett SQL Server Agent Job (T-SQL)

I SQL Server kan du använda sp_update_jobstep lagrad procedur för att ändra ett befintligt jobbsteg för ett SQL Server Agent-jobb.

När du skapar ett SQL Server Agent-jobb skapar du ett eller flera jobbsteg för det jobbet. sp_update_jobstep proceduren låter dig uppdatera ett specifikt jobbsteg oberoende av det faktiska jobbet eller andra jobbsteg.

Exempel

I det här exemplet skapar vi ett jobb med ett jobbsteg, sedan använder vi sp_update_jobstep för att ändra jobbsteget.

Skapa jobbet

Skapa först jobbet:

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

Ovanstående kod använder fem lagrade procedurer, men sp_add_jobstep proceduren är den enda som innehåller detaljerna som kan ändras med sp_update_jobstep . De andra procedurerna har sina egna matchande "uppdaterings"-procedurer (som sp_update_job och sp_update_schedule ).

Så bara för att vara tydlig är följande del den del som vi kan uppdatera med sp_update_jobstep förfarande.

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;

I det här fallet gav vi sex argument när vi skapade jobbet. Förfarandet accepterar faktiskt mycket mer än så, men detta kommer att göra för våra syften.

Uppdatera jobbsteget

Vi kan nu använda sp_update_jobstep för att ändra ovanstående jobbsteg.

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;

Det enda detta exempel gör är att öka försöken igen från 5 till 10 .

sp_update_jobstep lagrad procedur ä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 kunde vi i det här fallet ha utelämnat de andra argumenten, så här:

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

Kontrollera jobbet

Du kan använda sp_help_job för att få information om SQL Server Agent-jobben i systemet.

Du kan använda det med eller utan parametrar, men för att få detaljerna om jobbsteget måste du ange jobbets namn eller ID.

Så här:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Så här ser resultatet ut när du kör det i SSMS:

Här är ett exempel på koden när du använder ID:t:

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

När du använder ID:t kan du utelämna parameternamnet om du vill.

Exempel:

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

Full syntax

Den fullständiga syntaxen för sp_update_jobstep går så här:

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

Se Microsofts dokumentation för sp_update_jobstep för en förklaring av varje parameter, såväl som de värden som var och en accepterar.

Observera att uppdatering av ett jobbsteg ökar jobbversionsnumret.


  1. Hur man laddar ner och installerar SQLite-verktyg

  2. Kan inte öppna användarens standarddatabas. Inloggningen misslyckades. efter installation av SQL Server Management Studio Express

  3. Använd sammansatt primärnyckel som främmande nyckel

  4. Förstå PostgreSQL-datumtyper och funktioner (genom exempel)