Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Modyfikowanie zadania agenta serwera SQL (T-SQL)

W SQL Server możesz użyć sp_update_job procedura składowana do modyfikowania istniejącego zadania agenta SQL Server.

Przykład

W tym przykładzie tworzymy zadanie, a następnie używamy sp_update_job aby zmodyfikować tę pracę.

Utwórz zadanie

Najpierw utwórz zadanie:

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

Powyższy kod używa pięciu procedur składowanych, ale sp_update_job procedura aktualizuje tylko te szczegóły, które zostały utworzone za pomocą sp_add_job procedura. Inne procedury mają własne, dopasowane procedury „aktualizacji”.

Żeby było jasne, następna część to ta część, którą możemy zaktualizować za pomocą sp_update_job procedura.

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

W tym przypadku podczas tworzenia pracy podaliśmy tylko trzy argumenty. Procedura faktycznie akceptuje znacznie więcej, ale jedynym wymaganym argumentem jest nazwa zadania.

Zaktualizuj zadanie

Możemy teraz użyć sp_update_job aby zmodyfikować powyższe zadanie.

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

Jedyne, co robi ten przykład, to zmiana nazwy zadania.

sp_update_job procedura składowana zmienia tylko te ustawienia, dla których podane są wartości parametrów. Jeśli parametr zostanie pominięty, bieżące ustawienie zostanie zachowane.

Dlatego w tym przypadku mogliśmy pominąć opis i nazwę kategorii:

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

Wyłącz zadanie

Możesz wyłączyć zadanie, ustawiając @enabled do 0 :

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

W tym przykładzie zmieniłem również nazwę zadania, aby było jasne, że zadanie jest wyłączone.

Sprawdź pracę

Możesz użyć sp_help_job aby wyświetlić bieżące ustawienia zadania.

Możesz go używać z parametrami lub bez. Gdy jest używany bez parametrów, zwraca wszystkie zadania.

EXEC sp_help_job;

Jeśli chcesz zobaczyć szczegóły tylko jednej pracy, możesz podać nazwę lub identyfikator pracy.

Tak:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Oto, jak wygląda wynik podczas wykonywania go w programie SSMS:

Chociaż podając imię i nazwisko, musisz zapamiętać nazwisko, które nadałeś pracy. W naszym przypadku, jeśli uruchomimy tę procedurę po poprzednim przykładzie (kiedy wyłączyliśmy zadanie), musielibyśmy to zrobić:

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

Jednak identyfikator zadania pozostaje stały, więc możesz go użyć niezależnie od nazwy zadania.

Przykład:

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

Używając identyfikatora, możesz pominąć nazwę parametru, jeśli chcesz.

Przykład:

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

Co się dzieje z etapami pracy, harmonogramem itp.?

Modyfikowanie zadania nie narusza jego kroków ani informacji o harmonogramie. Kroki i harmonogram zadania pozostaną nienaruszone po wprowadzeniu jakichkolwiek modyfikacji.

Jeśli chcesz zmodyfikować kroki lub harmonogram, musisz użyć dla nich odpowiedniej procedury składowanej (na przykład użyj sp_update_schedule aby zaktualizować swój harmonogram i sp_update_jobstep aby zaktualizować swój etap pracy).

Pełna składnia

Pełna składnia sp_update_job idzie tak:

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 ]

Zobacz dokumentację Microsoft dla sp_update_job dla wyjaśnienia każdego parametru, a także wartości, które każdy akceptuje.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podłączanie RStudio do SQL Server

  2. SqlParameter nie zezwala na nazwę tabeli - inne opcje bez ataku wstrzykiwania sql?

  3. Czy kolejność Sql JOIN wpływa na wydajność?

  4. 🆕 Pierwsze spojrzenie na SQL Server 2022 — 5 najlepszych nowych funkcji (dodatkowe 5 funkcji)

  5. Łączenie się z SQL Server 2012 przy użyciu sqlalchemy i pyodbc