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

Memodifikasi Pekerjaan Agen SQL Server (T-SQL)

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

Contoh

Dalam contoh ini, kami membuat pekerjaan, kemudian kami menggunakan sp_update_job untuk mengubah pekerjaan itu.

Buat Pekerjaan

Pertama, buat pekerjaan:

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

Kode di atas menggunakan lima prosedur tersimpan tetapi sp_update_job prosedur hanya memperbarui detail yang dibuat dengan sp_add_job prosedur. Prosedur lain memiliki prosedur "pembaruan" yang cocok.

Supaya lebih jelas, bagian berikut ini adalah bagian yang bisa kita update dengan sp_update_job prosedur.

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

Dalam hal ini kami hanya menyediakan tiga argumen saat membuat pekerjaan. Prosedur sebenarnya menerima lebih dari itu, tetapi satu-satunya argumen yang diperlukan adalah nama pekerjaan.

Memperbarui Pekerjaan

Sekarang kita dapat menggunakan sp_update_job untuk mengubah pekerjaan di atas.

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

Satu-satunya hal yang dilakukan contoh ini adalah mengubah nama pekerjaan.

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

Oleh karena itu, dalam contoh ini, kami dapat menghilangkan deskripsi dan nama kategori:

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

Menonaktifkan Pekerjaan

Anda dapat menonaktifkan pekerjaan dengan menyetel @enabled ke 0 :

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

Dalam contoh ini saya juga mengubah nama pekerjaan untuk memperjelas bahwa pekerjaan tersebut dinonaktifkan.

Periksa Pekerjaan

Anda dapat menggunakan sp_help_job untuk melihat pengaturan pekerjaan saat ini.

Anda dapat menggunakannya dengan atau tanpa parameter. Ketika digunakan tanpa parameter, ia mengembalikan semua pekerjaan.

EXEC sp_help_job;

Jika Anda hanya ingin melihat detail satu pekerjaan, Anda dapat memberikan nama atau ID pekerjaan tersebut.

Seperti ini:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Begini hasilnya saat dijalankan di SSMS:

Meskipun, saat memberikan nama, Anda harus mengingat nama belakang yang Anda berikan untuk pekerjaan itu. Dalam kasus kami, jika kami menjalankan prosedur ini setelah contoh sebelumnya (ketika kami menonaktifkan pekerjaan), kami perlu melakukan ini:

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

Namun, ID pekerjaan tetap konstan, sehingga Anda dapat menggunakannya terlepas dari nama pekerjaan.

Contoh:

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

Apa yang Terjadi dengan Langkah Kerja, Jadwal, dll?

Memodifikasi pekerjaan tidak merusak langkah-langkah pekerjaan itu dan menjadwalkan informasi. Langkah dan jadwal pekerjaan akan tetap utuh setelah Anda melakukan modifikasi apa pun.

Jika Anda perlu mengubah langkah atau jadwal, Anda harus menggunakan prosedur tersimpan yang sesuai untuknya (misalnya, gunakan sp_update_schedule untuk memperbarui jadwalnya dan sp_update_jobstep untuk memperbarui langkah tugasnya).

Sintaks Penuh

Sintaks lengkap sp_update_job seperti ini:

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 ]

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membagi string sehingga saya dapat mengakses item x?

  2. Nilai NULL di dalam klausa NOT IN

  3. Ubah Mode Suspect Database SQL ke Mode Normal Dengan Query

  4. Bagaimana saya bisa mengkloning database SQL Server di server yang sama di SQL Server 2008 Express?

  5. Jalankan Query Dinamis dengan go in sql