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

Rediger et SQL Server Agent Job (T-SQL)

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

Eksempel

I dette eksempel opretter vi et job, derefter bruger vi sp_update_job for at ændre det job.

Opret jobbet

Først skal du oprette jobbet:

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

Ovenstående kode bruger fem lagrede procedurer, men sp_update_job proceduren opdaterer kun de detaljer, der blev oprettet med sp_add_job procedure. De andre procedurer har deres egen matchende "opdaterings"-procedure.

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

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

I dette tilfælde gav vi kun tre argumenter, da vi oprettede jobbet. Proceduren accepterer faktisk meget mere end det, men det eneste nødvendige argument er jobbets navn.

Opdater jobbet

Vi kan nu bruge sp_update_job for at ændre ovenstående job.

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

Det eneste, dette eksempel gør, er at ændre navnet på jobbet.

sp_update_job 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 beskrivelsen og kategorinavnet:

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

Deaktiver et job

Du kan deaktivere et job ved at indstille @enabled til 0 :

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

I dette eksempel ændrede jeg også jobbets navn for at gøre det tydeligt, at jobbet er deaktiveret.

Tjek opgaven

Du kan bruge sp_help_job for at se de aktuelle indstillinger for et job.

Du kan bruge den med eller uden parametre. Når den bruges uden parametre, returnerer den alle job.

EXEC sp_help_job;

Hvis du kun ønsker at se detaljerne for ét job, kan du angive jobbets navn eller ID.

Sådan:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

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

Selvom du, når du angiver navnet, skal huske det efternavn, du gav jobbet. I vores tilfælde, hvis vi kører denne procedure efter det forrige eksempel (da vi deaktiverede jobbet), skulle vi gøre dette:

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

Jobbets ID forbliver dog konstant, så du kan bruge det uanset jobbets navn.

Eksempel:

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

Hvad sker der med jobtrinnene, tidsplanen osv.?

Ændring af et job bryder ikke jobbets trin og tidsplanoplysninger. Et jobs trin og tidsplan forbliver intakt, efter du har foretaget ændringer.

Hvis du har brug for at ændre trinene eller tidsplanen, skal du bruge den passende lagrede procedure for dem (brug f.eks. sp_update_schedule for at opdatere dens tidsplan og sp_update_jobstep for at opdatere sit jobtrin).

Fuld syntaks

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

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 ]

Se Microsofts dokumentation for sp_update_job for en forklaring af hver parameter, samt de værdier, som hver accepterer.


  1. Håndtering af SQL-databaser med PyQt:Det grundlæggende

  2. Sådan sender du e-mails fra SQL Server (T-SQL)

  3. Sådan sikkerhedskopieres MySQL-databaser ved hjælp af AutoMySQLBackup

  4. Hjælp venligst med at forbedre SQL Server-statistikker!