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

Úprava úlohy SQL Server Agent (T-SQL)

V SQL Server můžete použít sp_update_job uložená procedura pro úpravu existující úlohy SQL Server Agent.

Příklad

V tomto příkladu vytvoříme úlohu a poté použijeme sp_update_job upravit tuto úlohu.

Vytvořte úlohu

Nejprve vytvořte úlohu:

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

Výše uvedený kód používá pět uložených procedur, ale sp_update_job procedura aktualizuje pouze ty podrobnosti, které byly vytvořeny pomocí sp_add_job postup. Ostatní procedury mají svůj vlastní odpovídající „aktualizační“ postup.

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

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

V tomto případě jsme při vytváření úlohy poskytli pouze tři argumenty. Procedura ve skutečnosti přijímá mnohem více než to, ale jediným požadovaným argumentem je název úlohy.

Aktualizujte úlohu

Nyní můžeme použít sp_update_job upravit výše uvedenou úlohu.

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

Jediné, co tento příklad dělá, je změna názvu úlohy.

sp_update_job 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 popis a název kategorie:

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

Zakázat úlohu

Úlohu můžete deaktivovat nastavením @enabled na 0 :

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

V tomto příkladu jsem také změnil název úlohy, aby bylo zřejmé, že úloha je zakázána.

Zkontrolujte úlohu

Můžete použít sp_help_job pro zobrazení aktuálního nastavení úlohy.

Můžete jej použít s parametry nebo bez nich. Při použití bez parametrů vrátí všechny úlohy.

EXEC sp_help_job;

Pokud chcete zobrazit podrobnosti pouze o jedné úloze, můžete zadat její název nebo ID.

Asi takto:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

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

I když při zadávání jména si musíte pamatovat příjmení, které jste práci zadali. V našem případě, pokud spustíme tento postup po předchozím příkladu (když jsme úlohu deaktivovali), museli bychom udělat toto:

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

ID úlohy však zůstává konstantní, takže jej můžete použít bez ohledu na název úlohy.

Příklad:

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

Co se stane s pracovními kroky, plánem atd.?

Úprava úlohy nenaruší kroky této úlohy a informace o plánu. Po provedení jakýchkoli úprav zůstanou kroky a plán úlohy nedotčeny.

Pokud potřebujete upravit kroky nebo plán, budete pro ně muset použít příslušnou uloženou proceduru (například použít sp_update_schedule aktualizovat jeho plán a sp_update_jobstep aktualizovat jeho krok úlohy).

Úplná syntaxe

Úplná syntaxe sp_update_job vypadá takto:

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 ]

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


  1. Správa klíčů SSL a šifrování dat MySQL při přenosu

  2. Operační analýza v reálném čase a index úložiště neshlukovaných sloupců

  3. Jak mohu zastavit skript Postgres, když narazí na chybu?

  4. Složitosti NULL – 2. část