Một công cụ tốt để trực quan hóa các công việc của Tác nhân SQL là gì? [đóng cửa]


14

Tôi thấy các công cụ MS SQL Studio tích hợp để quản lý các công việc Đại lý có một chút bực bội. Những công cụ nào bạn thấy hữu ích?

Chính thức, có ba điều tôi muốn thấy trong một công cụ như vậy:

  • Một bản tóm tắt đồ họa về những công việc đã chạy khi nào, trong bao lâu và liệu chúng có thành công hay không.
  • Chế độ xem trạng thái hiện tại, như Trình theo dõi hoạt động công việc, nhưng được làm mới trong thời gian gần như thực.
  • Một giao diện thuận tiện hơn để sao chép hoặc sửa đổi các công việc (ví dụ: so sánh hai bước công việc mà không bị chặn bởi các hộp thoại phương thức).

Có lẽ sẽ đơn giản để viết một ứng dụng nhỏ để xử lý việc này, nhưng chắc chắn ai đó đã hoàn thành nó và làm nó tốt hơn.

Đây rõ ràng là một câu hỏi chủ quan, vì vậy nếu một mod của một số người lang thang qua, hãy thoải mái biến nó thành CW.

Câu trả lời:


13

Có một số googling xung quanh và đây là một số phần mềm có thể bạn quan tâm:

  1. Trình quản lý công việc SQL https://www.idera.com/productssolutions/freetools/sqljobmanager

  2. Truy vấn Hiện đang chạy Công việc Tác nhân Máy chủ SQL http://sqlconcept.com/2011/06/25/how-to-query-civersely-rucky-sql-server-agent-jobs/

Nếu bất cứ ai có nhiều liên kết để thêm, hãy tiếp tục!


Đối với điểm 3, truy vấn liên kết và ghi chú ở đây -

Hôm nay tôi đã thực hiện một nhiệm vụ để khám phá một cách liệt kê tất cả các công việc SQL Server Agent hiện đang chạy. Như mọi nhiệm vụ khác, nhiệm vụ này cũng bắt đầu với Google-ing. :)

Trong vòng 2 phút, tôi đã tìm thấy bài đăng tuyệt vời này của Brent Ozar trên SQLServerPedia. Tại sao bài này rất tuyệt? Thật tuyệt vời vì Brent đã hình dung rằng nếu bạn chỉ truy vấn các sysjobs và các bảng sysjobhistory thì bạn sẽ không có được trạng thái công việc hiện tại chính xác. Tuy nhiên, trong bảng sysjobhistory, bạn có một cột run_status, tuy nhiên (mặc dù theo BOL, các giá trị có thể có cho cột này là Trạng thái thực thi công việc: 0 = Thất bại, 1 = Thành công, 2 = Thử lại, 3 = Hủy, 4 = Trong tiến trình trực tiếp) trong thực tế, giá trị sẽ không bao giờ là 4 (Đang tiến hành). Trên thực tế, trong bảng sysjobhistory được lưu giữ dữ liệu lịch sử của từng bước công việc, có nghĩa là trạng thái của bước chỉ được cập nhật sau khi bước tiếp theo được thực thi. Nói cách khác, bảng KHÔNG được cập nhật theo thời gian thực, cũng không phải mỗi giây.

Vì vậy, Brent đã tìm ra rằng có một thủ tục được lưu trữ không có giấy tờ sys.xp_sqlagent_enum_jobs, một phần của sp_help_job, có thể đưa ra trạng thái thực thi hiện tại của Tác vụ Tác nhân.

Mặc dù tôi đã tìm được cách để có được các công việc hiện đang chạy, tôi không hài lòng với tập lệnh này vì nó chỉ chạy trên SQL 2005/2008.

Tôi nên làm gì nếu tôi có phiên bản SQL 2000 và rất tò mò về các công việc hiện đang chạy?

Với một chút giúp đỡ của Tim Chapman (bậc thầy của www.QueryServerNation.com) tôi đã tìm ra cách để làm điều đó. CẢM ƠN, Tim!

Đây là kịch bản cuối cùng, sẽ chạy trên SQL 2000, 2005 và 2008 và sẽ cung cấp cho bạn các công việc đại lý SQL Server hiện đang chạy. . .rucky = 1).

Đơn giản như nó là. Thưởng thức.

IF EXISTS (SELECT *
FROM    tempdb.dbo.sysobjects
WHERE   id = OBJECT_ID(N'[tempdb].[dbo].[Temp1]')
)
DROP TABLE [tempdb].[dbo].[Temp1]
GO
CREATE TABLE [tempdb].[dbo].[Temp1]
(
job_id uniqueidentifier NOT NULL,
last_run_date nvarchar (20) NOT NULL,
last_run_time nvarchar (20) NOT NULL,
next_run_date nvarchar (20) NOT NULL,
next_run_time nvarchar (20) NOT NULL,
next_run_schedule_id INT NOT NULL,
requested_to_run INT NOT NULL,
request_source INT NOT NULL,
request_source_id sysname
COLLATE database_default NULL,
running INT NOT NULL,
current_step INT NOT NULL,
current_retry_attempt INT NOT NULL,
job_state INT NOT NULL)
DECLARE @job_owner   sysname
DECLARE @is_sysadmin   INT
SET @is_sysadmin   = isnull (is_srvrolemember ('sysadmin'), 0)
SET @job_owner   = suser_sname ()
INSERT INTO [tempdb].[dbo].[Temp1]

--EXECUTE sys.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
EXECUTE master.dbo.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
UPDATE [tempdb].[dbo].[Temp1]
SET last_run_time    = right ('000000' + last_run_time, 6),
next_run_time    = right ('000000' + next_run_time, 6);
-----
SELECT j.name AS JobName,
j.enabled AS Enabled,
CASE x.running
WHEN 1
THEN
'Running'
ELSE
CASE h.run_status
WHEN 2 THEN 'Inactive'
WHEN 4 THEN 'Inactive'
ELSE 'Completed'
END
END
AS CurrentStatus,
coalesce (x.current_step, 0) AS CurrentStepNbr,
CASE
WHEN x.last_run_date > 0
THEN
convert (datetime,
substring (x.last_run_date, 1, 4)
+ '-'
+ substring (x.last_run_date, 5, 2)
+ '-'
+ substring (x.last_run_date, 7, 2)
+ ' '
+ substring (x.last_run_time, 1, 2)
+ ':'
+ substring (x.last_run_time, 3, 2)
+ ':'
+ substring (x.last_run_time, 5, 2)
+ '.000',
121
)
ELSE
NULL
END
AS LastRunTime,
CASE h.run_status
WHEN 0 THEN 'Fail'
WHEN 1 THEN 'Success'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Cancel'
WHEN 4 THEN 'In progress'
END
AS LastRunOutcome,
CASE
WHEN h.run_duration > 0
THEN
(h.run_duration / 1000000) * (3600 * 24)
+ (h.run_duration / 10000 % 100) * 3600
+ (h.run_duration / 100 % 100) * 60
+ (h.run_duration % 100)
ELSE
NULL
END
AS LastRunDuration
FROM          [tempdb].[dbo].[Temp1] x
LEFT JOIN
msdb.dbo.sysjobs j
ON x.job_id = j.job_id
LEFT OUTER JOIN
msdb.dbo.syscategories c
ON j.category_id = c.category_id
LEFT OUTER JOIN
msdb.dbo.sysjobhistory h
ON     x.job_id = h.job_id
AND x.last_run_date = h.run_date
AND x.last_run_time = h.run_time
AND h.step_id = 0
where x.running = 1

Tôi đã thử SQLjobvis; nó cho phép tôi hình dung lịch trình phần nào, nhưng nó không thực sự tốt hơn những gì tôi có thể làm cho bản thân mình trong một giờ. Tôi đã đặt trục thời gian theo chiều dọc, để người dùng có thể dễ dàng cuộn qua các ngày.
Jon của tất cả các giao dịch

3

Tôi biết đây là một bài viết cũ hơn, và cá nhân tôi đã có cùng một vấn đề. Quản lý nhiều công việc của tác nhân SQL trên nhiều trường hợp, vì vậy tôi đã quyết định tạo SQL Agent Insight , được tìm thấy ở đây> http://brentec.ca . Nó là một sản phẩm đang phát triển và sẽ ra khỏi phiên bản beta trong tương lai gần và nó liên tục được cập nhật và các đề xuất được chào đón. Đây là một dự án tôi làm trong thời gian rảnh khi tôi tham khảo và cũng có một buổi biểu diễn toàn thời gian, nhưng nếu các đề xuất này có giá trị, họ sẽ đưa vào phễu cho tương lai.

Hiện tại nó chỉ là một công cụ giám sát cho tác nhân SQL, với một số khả năng kịch bản. Hiện đang ở phiên bản 0.11 với 2-3 cập nhật mỗi năm và có thông tin liên hệ để được hỗ trợ. Vâng, ngay bây giờ, không có bất kỳ trợ giúp trực tuyến nào, nhưng vì nó gần như là một sản phẩm chỉ đọc, không có thiệt hại nào có thể được thực hiện đối với phiên bản SQL được giám sát.


2

Bạn đã thử tính năng báo cáo?

Nhấp chuột phải vào Tác nhân SQL => Báo cáo => báo cáo chuẩn


Tôi đã không, nhưng chúng không hữu ích lắm. Có hai, và chúng chỉ hiển thị số lần thực hiện và thời gian chạy trung bình.
Jon của tất cả các giao dịch

Để rõ ràng, tôi không loại trừ các báo cáo SQL Studio, nếu ai đó có một báo cáo hữu ích mà họ muốn chia sẻ.
Jon của tất cả các giao dịch


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.