SQL Agent işlerini görselleştirmek için iyi bir araç nedir? [kapalı]


14

Ajan işlerini yönetmek için yerleşik MS SQL Studio araçlarını biraz sinir bozucu buluyorum. Orada hangi araçları yararlı buldunuz?

Böyle bir araçta görmek istediğim üç şey var:

  • Hangi işlerin ne zaman, ne kadar süreyle ve başarılı olup olmadıklarının grafik özeti.
  • İş Etkinliği İzleyicisi gibi geçerli bir durum görünümü, ancak neredeyse gerçek zamanlı olarak yenilenir.
  • İşleri çoğaltmak veya değiştirmek için daha uygun bir arayüz (örn. Kalıcı iletişim kutuları tarafından engellenmeden iki iş adımını karşılaştırın).

Muhtemelen bununla başa çıkmak için küçük bir uygulama yazmak basit olurdu, ama birisi kesinlikle zaten yaptı ve daha iyi yaptı.

Bu açıkça öznel bir sorudur, bu yüzden bir çeşit mod geçmişte dolaşırsa, onu bir CW yapmaktan çekinmeyin.

Yanıtlar:


13

Bazı googling yaptı ve burada ilginizi çekebilecek bazı yazılımlar var:

  1. SQL İş Yöneticisi https://www.idera.com/productssolutions/freetools/sqljobmanager

  2. Şu anda SQL Server Agent İşlerini Çalışan Sorgu http://sqlconcept.com/2011/06/25/how-to-query-currently-running-sql-server-agent-jobs/

Ekleyecek başka bağlantılar varsa, devam edin!


3. nokta için bağlantı sorgusu ve notlar burada -

Bugün, şu anda çalışan tüm SQL Server Agent işlerini listelemenin bir yolunu keşfetmeye çalıştım. Diğer tüm görevler gibi bu da Google-ing ile başladı. :)

2 dakika içinde SQLServerPedia'daki Brent Ozar'ın bu harika gönderisini buldum. Bu gönderi neden bu kadar harika? Bu çok harika çünkü Brent sadece sysjobs ve sysjobhistory tablolarını sorgularsanız doğru iş durumunu doğru şekilde elde edemeyeceğinizi düşündü. Yani sysjobhistory tablosunda run_status sütununuz var, ancak (BOL'a göre bu sütun için olası değerler “İş yürütme durumu: 0 = Başarısız, 1 = Başarılı, 2 = Yeniden Dene, 3 = İptal edildi, 4) = Devam ediyor ”), gerçekte değer asla 4 olmaz (Devam Ediyor). Aslında, sysjobhistory tablosunda yürütülen her iş adımının geçmiş verileri tutulur, yani adımın durumu yalnızca bir sonraki adım yürütüldükten sonra güncellenir. Başka bir deyişle, tablo gerçek zamanlı olarak veya her iki saniyede bir güncellenmez.

Böylece Brent, Aracı İşinin geçerli yürütme durumunu verebilecek sp_help_job'ın bir parçası olan sys.xp_sqlagent_enum_jobs belgesinin saklı bir prosedürü olduğunu anladı.

Şu anda çalışan işleri almanın bir yolunu bulmama rağmen, sadece SQL 2005 / 2008'de çalıştığı için bu komut dosyasından memnun değildim.

Bir SQL 2000 örneğim varsa ve şu anda çalışan işler hakkında çok meraklıysam ne yapmam gerekir?

Tim Chapman'ın yardımıyla (www.SQLServerNation.com'un ustası) nasıl yapılacağını anladım. TEŞEKKÜRLER Tim!

İşte SQL 2000, 2005 ve 2008'de çalışacak ve şu anda çalışan SQL Server aracısı işlerini verecek olan son komut dosyası. (Gördüğünüz gibi Brent'in senaryosundaki fark çok az: “sys.xp_sqlagent_enum_jobs” yerine “master.dbo.xp_sqlagent_enum_jobs” kullanıyorum ve “burada x .running = 1 ″).

Olduğu kadar basit. Zevk almak.

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

SQLjobvis denedim; programı biraz görselleştirmeme izin veriyor, ancak bir saat içinde kendim için yapabileceğimden daha iyi değil. Zaman eksenini dikey olarak koyardım, böylece kullanıcılar günler arasında kolayca gezinebilir.
Tüm Esnalardan Jon

3

Bunun eski bir gönderi olduğunu biliyorum ve ben de aynı sorunu yaşadım. Birden çok örnekte birden çok SQL aracısı işini yönettiğim için burada bulunan http://brentec.ca SQL Aracı Sicili'ni oluşturmaya karar verdim . Gelişen bir üründür ve yakın gelecekte beta sürümünden çıkacaktır ve sürekli olarak güncellenmektedir ve öneriler memnuniyetle karşılanmaktadır. Bu, boş zamanlarımda çalıştığım ve aynı zamanda tam zamanlı bir konser verdiğim bir proje, ancak öneriler değerse, gelecek için hazneye konurlar.

Şu anda sadece komut dosyası oluşturma yeteneği ile SQL aracısı için bir izleme aracıdır. Şu anda 0.11 sürümünde yılda 2-3 güncelleme ile oturuyor ve yardım için iletişim bilgilerine sahip. Evet, şu anda çevrimiçi yardım yok, ancak hemen hemen salt okunur bir ürün olduğundan, izlenen SQL örneğine hiçbir zarar verilemez.


2

Raporlar özelliğini denediniz mi?

SQL Agent => Raporlar => standart raporlara sağ tıklayın


Yapmadım, ama çok yardımcı değiller. İki tane var ve sadece yürütme sayısını ve ortalama çalışma süresini gösteriyorlar.
Tüm Ticaretten Jon

Açıkçası, birinin paylaşmak istediği yararlı bir raporu varsa, SQL Studio raporlarını dışlamıyorum.
Tüm Esnalardan Jon


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.