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

Tạo lịch biểu tác nhân SQL Server với T-SQL

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_type8 , 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@active_end_date đối số để bắt đầu thực hiện một công việc. @active_start_time 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 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buộc Oracle trả lại N hàng trên cùng với SKIP ĐÃ KHÓA

  2. băm một hàng SQL?

  3. Tại sao tôi gặp lỗi Kiểu dữ liệu Xml không được hỗ trợ trong các truy vấn phân tán khi truy vấn máy chủ được liên kết cho dữ liệu không phải xml?

  4. Chuyển đổi ‘datetimeoffset’ thành ‘datetime’ trong SQL Server (Ví dụ T-SQL)

  5. SQL RANK () so với ROW_NUMBER ()