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

Cara Menggunakan Jadwal yang Sama untuk Beberapa Pekerjaan Agen SQL Server (T-SQL)

Saat Anda membuat pekerjaan Agen Server SQL, Anda memiliki opsi untuk membuat jadwal baru untuk pekerjaan itu atau menggunakan yang sudah ada.

Jadwal pekerjaan dapat dikelola secara independen dari pekerjaan. Anda dapat menggunakan sp_add_schedule untuk membuat jadwal dan sp_attach_schedule untuk melampirkan jadwal ke pekerjaan.

Ini memungkinkan Anda untuk melampirkan jadwal yang sama ke beberapa pekerjaan.

Contoh

Misalkan kita membuat pekerjaan menggunakan kode berikut:

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

Kode itu termasuk sp_add_schedule prosedur tersimpan. Prosedur ini membuat jadwal yang dapat digunakan oleh sejumlah pekerjaan. Dalam kasus kami, kami memanggil jadwal RunDailyAM .

Kami kemudian menggunakan sp_attach_schedule untuk melampirkan jadwal itu ke pekerjaan Agen Server SQL yang baru saja kita buat. Ini adalah prosedur tersimpan yang dapat kita gunakan untuk melampirkan jadwal yang sama ke pekerjaan berikutnya.

Sekarang mari kita buat pekerjaan SQL Server Agent lainnya, tetapi kali ini kita tidak akan menyertakan sp_add_schedule prosedur:

USE msdb;  
GO  
EXEC dbo.sp_add_job  
    @job_name = N'BackupWorldDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupWorldDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [World] TO DISK = N''C:\Backups\World.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_attach_schedule  
   @job_name = N'BackupWorldDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupWorldDB',
    @server_name = N'(LOCAL)';  
GO

Kami tidak menggunakan sp_add_schedule prosedur, karena kami menggunakan jadwal yang sudah dibuat di pekerjaan sebelumnya.

Namun kami melakukannya, gunakan sp_attach_schedule prosedur tersimpan, karena kami harus melampirkan jadwal yang dibuat sebelumnya ke pekerjaan baru kami.

Jadi kedua pekerjaan sekarang akan berjalan pada jadwal yang sama.

Cari tahu Berapa Banyak Pekerjaan yang Dilampirkan Jadwal

Anda dapat menggunakan sp_help_jobcount prosedur untuk mengembalikan jumlah pekerjaan yang dilampirkan pada jadwal tertentu. Cukup berikan nama jadwal atau ID saat memanggil prosedur.

Contoh:

EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';

Hasil:

JobCount
--------
 2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri Select SUM saya mengembalikan nol. Itu harus mengembalikan 0

  2. kesalahan 'datetime2' saat menggunakan kerangka kerja entitas di VS 2010 .net 4.0

  3. Wawasan tentang Batasan Unik SQL Server

  4. Apa itu @@MAX_PRECISION di SQL Server?

  5. Masukkan Gambar ke dalam Bidang Gambar SQL Server 2005 hanya menggunakan SQL