Khi sử dụng T-SQL, bạn có thể sử dụng sp_add_schedule
thủ tục được lưu trữ để thêm lịch trình SQL Server Agent.
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.
Bạn cũng có thể sử dụng sp_add_jobschedule
để tạo lịch biểu và đính kèm tất cả với cùng một quy trình.
Ví dụ về sp_add_schedule
Thủ tục
Đây là một ví dụ sử dụng sp_add_schedule
để tạo lịch biểu mới:
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
Thủ tục được lưu trữ này chấp nhận nhiều đối số hơn tôi đã đưa vào trong ví dụ này, nhưng đây là một số đối số phổ biến hơn. Xem các bảng bên dưới để biết sơ lược về các giá trị được chấp nhận.
@schedule_name
là đối số bắt buộc, nhưng các đối số khác là tùy chọn và có cài đặt mặc định trong trường hợp bạn không cung cấp.
Bây giờ chúng ta có thể sử dụng sp_attach_schedule
để đính kèm lịch biểu đó với công việc hiện có:
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).
Ví dụ về sp_add_jobschedule
Thủ tục
Dưới đây là một ví dụ sử dụng sp_add_jobschedule
để tạo một lịch biểu mới và đính kèm nó vào một công việc, tất cả chỉ trong một lần:
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;
Với quy trình này, @job_name
đối số cung cấp tên công việc và @name
đối số cung cấp tên mà bạn muốn đặt cho lịch biểu.
Giá trị tham số
Cách dữ liệu lịch biểu được lưu trữ trong msdb cơ sở dữ liệu làm cho nó hơi phức tạp khi lên lịch công việc với T-SQL.
Giá trị ngày / giờ được lưu trữ dưới dạng int các loại. Loại tần suất được biểu thị dưới dạng int , cũng như các giá trị khoảng thời gian và nhiều tùy chọn khác.
Dưới đây là tổng quan về các giá trị được chấp nhận cho các tham số được cung cấp trong các ví dụ trên.
@freq_type
Đối số này chỉ định thời điểm thực hiện một công việc. Nó chấp nhận các giá trị sau:
Giá trị | Mô tả |
---|---|
1 | Một lần |
4 | Hàng ngày |
8 | Hàng tuần |
16 | Hàng tháng |
32 | Hàng tháng, liên quan đến freq_interval |
64 | Chạy khi dịch vụ SQL Agent khởi động |
128 | Chạy khi máy tính không hoạt động |
@freq_interval
Đối số này chỉ định những ngày mà một công việc được thực hiện.
Đối số này phụ thuộc vào giá trị của @freq_type
đối số, như được nêu trong bảng sau:
Giá trị của freq_type | Hiệu ứng trên freq_interval |
---|---|
1 (một lần) | freq_interval không được sử dụng. |
4 (hàng ngày) | Mọi freq_interval ngày. |
8 (hàng tuần) | freq_interval là một hoặc nhiều trong số sau (kết hợp với OR toán tử logic):1 (Chủ nhật) 2 (Thứ hai) 4 (Thứ ba) 8 (Thứ Tư) 16 (Thứ năm) 32 (Thứ sáu) 64 (Thứ bảy) |
16 (hàng tháng) | Trên freq_interval ngày trong tháng. |
32 (người thân hàng tháng) | freq_interval là một trong những điều sau đây:1 (Chủ nhật) 2 (Thứ hai) 3 (Thứ ba) 4 (Thứ Tư) 5 (Thứ năm) 6 (Thứ sáu) 7 (Thứ bảy) 8 (Ngày) 9 (Ngày thường) 10 (Ngày cuối tuần) |
64 (khi dịch vụ SQLServerAgent bắt đầu) | freq_interval không được sử dụng. |
128 | freq_interval không được sử dụng. |
@freq_recurrence_factor
Điều này chỉ định số tuần hoặc tháng giữa thời gian thực hiện công việc theo lịch trình.
Đây là int , với giá trị mặc định là 0
và chỉ được sử dụng nếu freq_type
là 8
, 16
hoặc 32
.
@active_start_time
Chỉ định thời gian vào bất kỳ ngày nào giữa @active_start_date
và @active_end_date
đối số để bắt đầu thực hiện một công việc. @active_start_time
là int , với giá trị mặc định là 000000
, cho biết 12:00:00 A.M. trên đồng hồ 24 giờ và phải được nhập bằng biểu mẫu HHMMSS.
@active_start_date
Mặc dù không có trong các ví dụ của tôi ở trên, nhưng @active_start_date
đối số cho phép bạn chỉ định ngày bắt đầu thực hiện một công việc. Đây là int , với giá trị mặc định là NULL, cho biết ngày hôm nay. Ngày được định dạng là YYYYMMDD.
@active_end_date
Bạn cũng có thể cung cấp @active_end_date
đối số, chỉ định ngày có thể dừng việc thực thi một công việc.
@active_end_date
là int , với giá trị mặc định là 99991231
, cho biết ngày 31 tháng 12 năm 9999. Ngày được định dạng là YYYYMMDD.
Thông tin thêm
Xem tài liệu của Microsoft về sp_add_schedule
và / hoặc tài liệu của Microsoft cho sp_add_jobschedule
để biết thêm chi tiết về các đối số khác nhau và các giá trị được chấp nhận của chúng.