Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Perbarui Langkah Pekerjaan untuk Pekerjaan Agen Server SQL (T-SQL)

Di SQL Server, Anda dapat menggunakan sp_update_jobstep prosedur tersimpan untuk mengubah langkah pekerjaan yang ada dari pekerjaan Agen Server SQL.

Saat Anda membuat pekerjaan Agen Server SQL, Anda membuat satu atau beberapa langkah pekerjaan untuk pekerjaan itu. sp_update_jobstep prosedur memungkinkan Anda untuk memperbarui langkah pekerjaan tertentu terlepas dari pekerjaan sebenarnya atau langkah pekerjaan lainnya.

Contoh

Pada contoh ini kita membuat job dengan satu job step, kemudian kita menggunakan sp_update_jobstep untuk mengubah langkah pekerjaan.

Buat Pekerjaan

Pertama, buat pekerjaan:

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

Kode di atas menggunakan lima prosedur tersimpan, tetapi sp_add_jobstep prosedur adalah satu-satunya yang berisi detail yang dapat diubah dengan sp_update_jobstep . Prosedur lain memiliki prosedur "pembaruan" yang cocok (seperti sp_update_job dan sp_update_schedule ).

Supaya lebih jelas, part berikut ini adalah part yang bisa kita update dengan sp_update_jobstep prosedur.

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;

Dalam hal ini kami memberikan enam argumen saat membuat pekerjaan. Prosedur sebenarnya menerima lebih dari itu, tetapi ini akan dilakukan untuk tujuan kita.

Perbarui Langkah Pekerjaan

Sekarang kita dapat menggunakan sp_update_jobstep untuk mengubah langkah pekerjaan di atas.

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;

Satu-satunya hal yang dilakukan contoh ini adalah meningkatkan upaya coba lagi dari 5 ke 10 .

sp_update_jobstep prosedur tersimpan hanya mengubah pengaturan yang nilai parameternya diberikan. Jika parameter dihilangkan, pengaturan saat ini dipertahankan.

Oleh karena itu, dalam contoh ini, kita bisa menghilangkan argumen lain, seperti ini:

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

Periksa Pekerjaan

Anda dapat menggunakan sp_help_job untuk mendapatkan informasi tentang pekerjaan SQL Server Agent di sistem.

Anda dapat menggunakannya dengan atau tanpa parameter, tetapi untuk mendapatkan detail langkah pekerjaan, Anda harus memberikan nama atau ID pekerjaan.

Seperti ini:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Begini hasilnya saat dijalankan di SSMS:

Berikut contoh kode saat menggunakan ID:

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

Saat menggunakan ID, Anda dapat menghilangkan nama parameter jika diinginkan.

Contoh:

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

Sintaks Penuh

Sintaks lengkap sp_update_jobstep seperti ini:

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

Lihat dokumentasi Microsoft untuk sp_update_jobstep untuk penjelasan setiap parameter, serta nilai yang diterima masing-masing.

Perhatikan bahwa memperbarui langkah tugas akan menambah nomor versi tugas.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL TIDAK DI tidak berfungsi

  2. Mengapa nama tabel di SQL Server dimulai dengan dbo?

  3. SQL Server v.Berikutnya :Performa STRING_AGG, Bagian 2

  4. Cara Memeriksa Pengaturan Konfigurasi untuk Database Mail di SQL Server (T-SQL)

  5. Berikan izin tingkat tabel di SQL Server