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

Zaktualizuj krok zadania dla zadania agenta programu SQL Server (T-SQL)

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

Podczas tworzenia zadania SQL Server Agent, tworzysz jeden lub więcej kroków zadania dla tego zadania. sp_update_jobstep procedura umożliwia aktualizację określonego etapu pracy niezależnie od aktualnej pracy lub jakichkolwiek innych etapów pracy.

Przykład

W tym przykładzie tworzymy zadanie z jednym krokiem zadania, a następnie używamy sp_update_jobstep aby zmodyfikować etap zadania.

Utwórz zadanie

Najpierw utwórz zadanie:

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

Powyższy kod używa pięciu procedur składowanych, ale sp_add_jobstep procedura jest jedyną, która zawiera szczegóły, które można zmienić za pomocą sp_update_jobstep . Inne procedury mają swoje własne pasujące procedury „aktualizacji” (takie jak sp_update_job i sp_update_schedule ).

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

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;

W tym przypadku podczas tworzenia pracy podaliśmy sześć argumentów. Procedura faktycznie akceptuje znacznie więcej, ale to wystarczy dla naszych celów.

Zaktualizuj etap zadania

Możemy teraz użyć sp_update_jobstep aby zmodyfikować powyższy krok zadania.

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;

Jedyne, co robi ten przykład, to zwiększenie liczby prób ponownych prób z 5 do 10 .

sp_update_jobstep 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ąć inne argumenty, takie jak:

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

Sprawdź pracę

Możesz użyć sp_help_job aby uzyskać informacje o zadaniach SQL Server Agent w systemie.

Możesz go używać z parametrami lub bez, ale aby uzyskać szczegóły etapu zadania, musisz podać nazwę lub identyfikator zadania.

Tak:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

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

Oto przykład kodu przy użyciu identyfikatora:

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

Pełna składnia

Pełna składnia sp_update_jobstep idzie tak:

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

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

Pamiętaj, że aktualizacja kroku zadania zwiększa numer wersji zadania.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd systemu operacyjnego SQL Server 5:5 (odmowa dostępu).

  2. Użyj OBJECTPROPERTY(), aby dowiedzieć się, czy obiekt jest ograniczeniem CHECK w SQL Server

  3. Jak wykonać kopię zapasową bazy danych SQL Server za pomocą T-SQL

  4. Hierarchiczna lista typów zdarzeń wyzwalających w SQL Server 2017

  5. Wysoka dostępność programu SQL Server:Dodaj nowy dysk do istniejącego wystąpienia klastra pracy awaryjnej