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ụngsp_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
.