Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

sp_add_schedule so với sp_add_jobschedule trong SQL Server:Sự khác biệt là gì?

Nếu bạn đang trong quá trình tạo công việc SQL Server Agent với T-SQL, bạn có thể tự hỏi liệu có nên tạo lịch trình của nó với sp_add_schedule thủ tục được lưu trữ hoặc sp_add_jobschedule thủ tục.

Dưới đây là giải thích nhanh về sự khác biệt giữa hai quy trình này.

Sự khác biệt

  • sp_add_schedule thủ tục tạo ra một lịch biểu, nhưng không đính kèm nó với bất kỳ công việc nào. Để làm điều đó, bạn cần sử dụng sp_attach_schedule thủ tục.
  • sp_add_jobschedule thủ tục tạo lịch biểu và gắn nó vào một công việc nhất định, tất cả chỉ trong một lần.

Do đó, sp_add_jobschedule có thể sử dụng nếu bạn cần tạo lịch biểu mới cho một công việc cụ thể và công việc đó đã tồn tại. Nếu bạn đang tạo lịch biểu cho nhiều công việc và chưa có công việc nào, bạn có thể sử dụng sp_add_schedule . Sau đó, bạn có thể sử dụng sp_attach_schedule để gắn nó vào các công việc của bạn sau này.

Nhưng điều đó không có nghĩa là bạn không thể sử dụng sp_add_schedule thay vì sp_add_jobschedule nếu công việc đã tồn tại.

Sử dụng sp_add_schedule (kết hợp với sp_attach_schedule ) cho phép bạn tách quá trình tạo lịch biểu và gắn chúng vào công việc. Bạn vẫn có thể sử dụng kết hợp này ngay cả khi tạo một công việc với một lịch trình duy nhất.

Nói cách khác, bạn có thể sử dụng sp_add_schedule thay vì sp_add_jobschedule cho tất cả các công việc SQL Server Agent của bạn.

Ví dụ

sp_add_jobschedule Thủ tục

sp_add_jobschedule thủ tục tạo một lịch trình cho một công việc SQL Server Agent nhất định. Khi bạn gọi thủ tục này, bạn phải cung cấp tên hoặc ID của công việc mà bạn muốn ứng tuyển.

Về cơ bản, thủ tục này tạo ra một lịch biểu và gắn nó vào một công việc duy nhất.

Dưới đây là ví dụ về cách tạo công việc và sử dụng sp_add_jobschedule thủ tục được lưu trữ:

EXEC sp_add_jobschedule 
    @job_name = N'BackupMusicDB',
    @name = N'Weekly_Sun_3AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 30000;

Khi bạn nhìn vào sp_add_jobschedule thủ tục, @job_name đối số cung cấp tên công việc. @name đối số cung cấp tên mà bạn muốn đặt cho lịch biểu.

sp_add_schedule Thủ tục

sp_add_schedule thủ tục cho phép bạn tạo lịch biểu mà không cần phải chỉ định công việc để đính kèm.

Quy trình này tạo ra lịch biểu, nhưng không gắn nó với bất kỳ công việc nào. Để đính kèm nó vào một công việc, bạn phải sử dụng sp_attach_schedule thủ tục.

Đây là một ví dụ:

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

Khi bạn sử dụng sp_attach_schedule , bạn phải cung cấp tên công việc hoặc ID của công việc (nhưng không phải cả hai), cũng như tên lịch trình hoặc ID (nhưng không phải cả hai).

Đính kèm sp_add_jobschedule Lên lịch

Điều quan trọng cần lưu ý là sp_attach_schedule có thể đính kèm lịch biểu đã được tạo bằng cả sp_add_schedule và với sp_add_jobschedule .

Nói cách khác, tạo lịch biểu với sp_add_jobschedule không giới hạn nó chỉ trong công việc bạn đã chỉ định khi tạo lịch trình. nó vẫn có sẵn để được đính kèm vào các công việc khác sau này bằng cách sử dụng sp_attach_schedule .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kích hoạt SQL Server:Kích hoạt DML

  2. Cách truyền DateTime thành Time

  3. Nhật ký giao dịch SQL Server, Phần 1:Khái niệm cơ bản về ghi nhật ký

  4. SQL Server:Truy vấn nhanh, nhưng chậm so với thủ tục

  5. Thực thi một thủ tục được lưu trữ trong một thủ tục được lưu trữ khác trong máy chủ SQL