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

Tạo công việc đại lý máy chủ SQL bằng T-SQL

SQL Server Agent là một dịch vụ Microsoft Windows thực thi các tác vụ quản trị đã lên lịch, được gọi là công việc trong SQL Server.

T-SQL bao gồm một bộ sưu tập lớn các thủ tục được lưu trữ giải quyết các công việc của SQL Server Agent.

Ở đây, chúng tôi sẽ sử dụng một số trong số chúng để tạo và lên lịch công việc SQL Server Agent.

Bạn cũng có thể tạo công việc SQL Server Agent thông qua GUI (trong SSMS) nếu muốn.

Bật XP của tác nhân

Nếu đây là lần đầu tiên bạn tạo công việc SQL Server Agent trên phiên bản SQL Server của mình, có thể bạn sẽ cần kích hoạt các thủ tục được lưu trữ mở rộng của SQL Server Agent (Agent XP).

Dưới đây là cách thực hiện việc này bằng T-SQL và đây là cách thực hiện bằng cách sử dụng SSMS GUI.

Sau khi làm xong, bạn có thể tiếp tục và tạo công việc SQL Server Agent giống như công việc bên dưới.

Ví dụ

Dưới đây là ví dụ về mã được sử dụng để tạo và lập lịch công việc SQL Server Agent.

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

Ở đây, chúng tôi sử dụng năm thủ tục được lưu trữ để tạo và lên lịch công việc. Hầu hết các thủ tục này chấp nhận nhiều đối số (tùy chọn) hơn những gì tôi đã sử dụng trong ví dụ này. Để có danh sách đầy đủ các đối số có sẵn cho mỗi quy trình, hãy xem các liên kết trong bảng bên dưới.

Các thủ tục được lưu trữ này nằm trong msdb cơ sở dữ liệu và bạn có thể thấy rằng chúng tôi đặt msdb như cơ sở dữ liệu hiện tại trước khi chúng tôi chạy chúng. Ngoài ra, bạn có thể đủ điều kiện cho chúng bằng tên cơ sở dữ liệu (ví dụ:msdb.dbo.sp_add_job... , v.v.)

Bảng sau cung cấp tổng quan nhanh về từng quy trình.

Thủ tục được lưu trữ Mô tả
sp_add_job Thêm một công việc mới được thực thi bởi dịch vụ SQL Agent.

Xem trang web của Microsoft để biết thêm thông tin.
sp_add_jobstep Thêm một bước thực hiện hoạt động thực tế cho công việc đã được thêm với sp_add_job .

Trong ví dụ trên, chúng tôi thêm một bước để sao lưu cơ sở dữ liệu. Chúng tôi chỉ định rằng cung cấp một lệnh T-SQL.

@retry_interval là trong vài phút.

Xem trang web của Microsoft để biết thêm thông tin.
sp_add_schedule Tạo một lịch biểu có thể được sử dụng cho bất kỳ công việc nào.

Trong trường hợp này, chúng tôi đã đưa ra @freq_type giá trị 4 là hàng ngày. Chúng tôi cũng đã cung cấp cho @freq_interval giá trị 4 , đó cũng là hàng ngày.

Thời gian dựa trên đồng hồ 24 giờ và được nhập ở dạng HHMMSS. Ví dụ của chúng tôi sử dụng 041000 , đó là 04:10:00.

Xem liên kết Microsoft bên dưới để biết các tùy chọn khác nhau có sẵn khi đặt tần suất.

Xem trang web của Microsoft để biết thêm thông tin.
sp_attach_schedule Đặt lịch cho một công việc. Tại đây, chúng tôi đính kèm lịch biểu mà chúng tôi đã thêm với sp_add_schedule vào công việc mà chúng tôi đã thêm với sp_add_job .

Lưu ý rằng lịch trình và công việc phải có cùng một chủ sở hữu.

Ngoài ra, một lịch trình có thể được đặt cho nhiều công việc và một công việc có thể được chạy trên nhiều lịch biểu.

Xem trang web của Microsoft để biết thêm thông tin.
sp_add_jobserver Nhắm mục tiêu công việc được chỉ định tại máy chủ được chỉ định. Điều này cũng chấp nhận @server_name đối số để chỉ định máy chủ.

Giá trị mặc định là (LOCAL) cho máy cục bộ. Trong ví dụ của chúng tôi, chúng tôi đã sử dụng máy cục bộ và vì vậy chúng tôi có thể bỏ qua đối số này.

Xem trang web của Microsoft để biết thêm thông tin.

Xem công việc

Bạn có thể sử dụng sp_help_job thủ tục được lưu trữ trong msdb cơ sở dữ liệu để xem các công việc SQL Server Agent đã được tạo trên máy chủ.

EXEC sp_help_job;

Đây là giao diện trên máy thử nghiệm của tôi:

Trong trường hợp này có ba công việc.

Bạn cũng có thể xem các công việc trong Trình khám phá đối tượng khi bạn có Tác nhân máy chủ SQL> Công việc đã mở rộng nút.

sp_help_job thủ tục được lưu trữ cho phép bạn cung cấp tên hoặc ID của một công việc để có thêm thông tin chi tiết về công việc đó.

Ví dụ:

EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Kết quả:

Kết quả được tách thành các chi tiết công việc cốt lõi, các bước công việc, lịch trình công việc và máy chủ mục tiêu công việc. Điều này phản ánh khá nhiều các thủ tục được lưu trữ mà chúng tôi đã chạy khi tạo công việc.

Xem tài liệu của Microsoft về sp_help_job để biết thêm thông tin, cũng như danh sách các đối số khác mà bạn có thể cung cấp.

Kiểm tra công việc

Bạn có thể sử dụng sp_start_job thủ tục được lưu trữ để kiểm tra xem công việc của bạn sẽ chạy. Thủ tục này chấp nhận tên hoặc ID công việc và nó sẽ chạy công việc ngay sau khi bạn thực hiện thủ tục.

Xem Cách chạy công việc tác nhân máy chủ SQL bằng T-SQL để làm ví dụ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để thực thi một gói SSIS từ .NET?

  2. Làm cách nào để tạo một thủ tục được lưu trữ sẽ tùy chọn tìm kiếm các cột?

  3. Cách đọc và phân tích kế hoạch thực thi SQL Server

  4. “Đảo ngược hàng” trong SQL Server là gì?

  5. Cách TRY_CAST () hoạt động trong SQL Server