sql >> Database teknologi >  >> RDS >> Sqlserver

Opdater et jobtrin for et SQL Server Agent-job (T-SQL)

I SQL Server kan du bruge sp_update_jobstep gemt procedure til at ændre et eksisterende jobtrin i et SQL Server Agent-job.

Når du opretter et SQL Server Agent-job, opretter du et eller flere jobtrin for det pågældende job. sp_update_jobstep procedure giver dig mulighed for at opdatere et specifikt jobtrin uafhængigt af det faktiske job eller andre jobtrin.

Eksempel

I dette eksempel opretter vi et job med ét jobtrin, derefter bruger vi sp_update_jobstep for at ændre jobtrinnet.

Opret jobbet

Først skal du oprette 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

Ovenstående kode bruger fem lagrede procedurer, men sp_add_jobstep procedure er den eneste, der indeholder de detaljer, der kan ændres med sp_update_jobstep . De andre procedurer har deres egne matchende "opdaterings"-procedurer (såsom sp_update_job og sp_update_schedule ).

Så bare for at være klar, er den følgende del den del, som vi kan opdatere med sp_update_jobstep procedure.

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 dette tilfælde gav vi seks argumenter, da vi oprettede jobbet. Proceduren accepterer faktisk meget mere end det, men det vil gøre det til vores formål.

Opdater jobtrinnet

Vi kan nu bruge sp_update_jobstep for at ændre ovenstående jobtrin.

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 eneste, dette eksempel gør, er at øge antallet af genforsøg fra 5 til 10 .

sp_update_jobstep gemt procedure ændrer kun de indstillinger, for hvilke parameterværdier er leveret. Hvis en parameter udelades, bibeholdes den aktuelle indstilling.

Derfor kunne vi i dette tilfælde have udeladt de andre argumenter, som dette:

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

Tjek opgaven

Du kan bruge sp_help_job for at få oplysninger om SQL Server Agent-jobbene i systemet.

Du kan bruge det med eller uden parametre, men for at få jobtrindetaljerne skal du angive jobnavnet eller ID.

Sådan:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Her er, hvordan resultatet ser ud, når det udføres i SSMS:

Her er et eksempel på koden, når du bruger ID'et:

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

Når du bruger ID'et, kan du udelade parameternavnet, hvis du ønsker det.

Eksempel:

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

Fuld syntaks

Den fulde syntaks for sp_update_jobstep går sådan her:

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 for sp_update_jobstep for en forklaring af hver parameter, samt de værdier, som hver accepterer.

Bemærk, at opdatering af et jobtrin øger jobversionsnummeret.


  1. Sådan kontrolleres Oracle-databasen for langvarige forespørgsler

  2. SQLite - Sikkerhedskopier en database til fil

  3. Generering af postgresql brugeradgangskode

  4. Sådan undgår du tabelmutationsfejl