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

3 cách để nhận các bước công việc của công việc đại lý máy chủ SQL (T-SQL)

Trong bài viết này, tôi trình bày ba tùy chọn để trả về các bước của công việc SQL Server Agent khi sử dụng T-SQL.

Các tùy chọn

Bạn có thể sử dụng các tùy chọn T-SQL sau để trả về các bước của công việc SQL Server Agent:

  • Tùy chọn 1 :Thực thi sp_help_job thủ tục được lưu trữ.
  • Tùy chọn 2 :Thực thi sp_help_jobstep thủ tục được lưu trữ.
  • Tùy chọn 3 :Truy vấn sysjobsteps bảng (và nối nó với sysjobs_view nếu được yêu cầu).

Tất cả các tùy chọn này đều nằm trong msdb cơ sở dữ liệu, và do đó cần được chạy trong cơ sở dữ liệu đó. Bạn có thể làm điều đó bằng cách chuyển sang msdb cơ sở dữ liệu trước tiên hoặc bằng cách định tính đối tượng một cách thích hợp (ví dụ:msdb.dbo.sysjobsteps ).

Tùy chọn 1:sp_help_job

Khi bạn gọi sp_help_job mà không có bất kỳ đối số nào, nó chỉ trả về một danh sách các công việc. Nhưng khi bạn chuyển tên hoặc ID của một công việc, nó sẽ liệt kê các chi tiết cho công việc đó, bao gồm cả các bước của nó.

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

EXEC sp_help_job 
	@job_name = 'SqlAgentTest';

Kết quả:

Phần này liệt kê công việc cũng như bất kỳ bước công việc, lịch trình và máy chủ mục tiêu nào.

Dưới đây là ví dụ về mã khi sử dụng ID:

EXEC sp_help_job 
	@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';

Khi sử dụng ID, bạn có thể bỏ qua tên tham số nếu muốn.

Ví dụ:

EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';

Cú pháp

Cú pháp đầy đủ của sp_help_job như sau:

sp_help_job { [ @job_id = ] job_id  
[ @job_name = ] 'job_name' }   
     [ , [ @job_aspect = ] 'job_aspect' ]   
     [ , [ @job_type = ] 'job_type' ]   
     [ , [ @owner_login_name = ] 'login_name' ]   
     [ , [ @subsystem = ] 'subsystem' ]   
     [ , [ @category_name = ] 'category' ]   
     [ , [ @enabled = ] enabled ]   
     [ , [ @execution_status = ] status ]   
     [ , [ @date_comparator = ] 'date_comparison' ]   
     [ , [ @date_created = ] date_created ]   
     [ , [ @date_last_modified = ] date_modified ]   
     [ , [ @description = ] 'description_pattern' ]

Xem tài liệu của Microsoft về sp_help_job để biết giải thích về từng tham số, cũng như các giá trị mà mỗi tham số chấp nhận.

Tùy chọn 2:sp_help_jobstep

sp_help_jobstep thủ tục được lưu trữ được thiết kế đặc biệt để trả về các bước của một công việc. Nhưng đó là tất cả những gì nó trở lại.

Vì vậy, nếu bạn không muốn xem bất kỳ nội dung nào trong lịch trình và máy chủ mục tiêu, v.v., thì đây có thể là những gì bạn đang tìm kiếm.

Bạn có thể vượt qua sp_help_jobstep tên công việc hoặc ID của nó (nhưng không phải cả hai).

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

EXEC sp_help_jobstep
	@job_name = 'SqlAgentTest';

Và đây là kết quả của một công việc hai bước:

Bạn cũng có thể chỉ định ID bước nếu bạn chỉ muốn trả lại một bước cụ thể. Tuy nhiên, bạn vẫn phải chỉ định công việc đó là gì (kèm theo ID hoặc tên của nó).

Dưới đây là một ví dụ về việc chỉ định bước thứ hai trong công việc:

EXEC sp_help_jobstep
	@job_name = 'SqlAgentTest', 
	@step_id = 2;

ID bước cần thực sự tồn tại cho công việc đó. Ví dụ:chỉ định ID bước là 3 cho công việc trên dẫn đến một lỗi.

Tùy chọn 3:sysjobsteps Bảng

Một tùy chọn khác là chạy một truy vấn đối với sysjobsteps bàn.

Bảng này chứa các bước của tất cả các công việc, vì vậy nếu bạn chỉ muốn các bước cho một công việc cụ thể, bạn sẽ cần chuyển ID công việc.

Đây là một ví dụ về truy vấn sysjobsteps bảng cho các bước của một công việc cụ thể:

SELECT * FROM msdb.dbo.sysjobsteps
WHERE job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Điều này trả về một kết quả tương tự cho sp_help_jobstep thủ tục.

Nếu bạn muốn một số chi tiết công việc được trả về (chẳng hạn như tên của công việc), bạn có thể chạy kết hợp giữa sysjobstepssysjobs_view .

Ví dụ:

SELECT
	jv.name,
	jv.description,
	jv.start_step_id,
	js.step_id,
	js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;

Đây là kết quả trong môi trường thử nghiệm của tôi:

Với việc đây là kết hợp bên trái, nó bao gồm các công việc không có bất kỳ bước nào (xem NULL trong step_idstep_name cột cho công việc được gọi là TestJob ).

Để giới hạn nó chỉ trong những công việc có các bước, hãy sử dụng một phép nối bên trong.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục “Lỗi tràn số học chuyển đổi int thành kiểu dữ liệu số” trong SQL Server

  2. Sự kiện chờ SQL Server -3

  3. Làm cách nào để tìm cổng cho MS SQL Server 2008?

  4. DTU trong cơ sở dữ liệu Azure SQL là gì và cách tìm ra chúng ta cần bao nhiêu

  5. Cách định cấu hình thư cơ sở dữ liệu trong SQL Server