我想找出一種方法來監視多個SQL Server上的SQL作業,並將詳細信息添加到Web窗體。我已經通過App Pools,Services和Tasks完成了這項工作,但現在我還需要監控工作。我有我創建存儲像作業名稱,運行時間,運行日期,狀態等如何爲多個服務器創建一個SQL作業網格?
事情一格,我發現這個問題:
How to monitor SQL Server Agent Job info in C#
string sqlJobQuery = "select j.job_id, j.name, j.enabled, jh.run_status," +
" js.last_outcome_message, jh.run_date, jh.step_name, jh.run_time" +
" from sysjobs j left join sysjobhistory jh on (j.job_id = jh.job_id)" +
" left join sysjobservers js on (j.job_id = js.job_id)" +
" where jh.run_date = (select Max(run_date) from sysjobhistory)" +
" and jh.run_time = (select Max(run_time) from sysjobhistory)";
他查詢看起來不錯但我需要從我的數據庫(dbo.Monitor)中加入一個表,其中包含一個服務器IP,以便我可以監視多個服務器。我曾嘗試在多個地方添加LEFT JOIN Monitor.dbo.SQLJobs,但它從不起作用。以下是我正在運行的查詢:
@serverIP nvarchar(20),
@JobID nvarchar(100)
SELECT Monitor.dbo.SQLJobs.ServerIP, msdb.dbo.sysjobs.job_id, msdb.dbo.sysjobs.name,
msdb.dbo.sysjobhistory.run_date, msdb.dbo.sysjobhistory.run_time, msdb.dbo.sysjobhistory.run_status, msdb.dbo.sysjobhistory.step_name
FROM msdb.dbo.sysjobs LEFT JOIN msdb.dbo.sysjobhistory
ON (msdb.dbo.sysjobs.job_id = msdb.dbo.sysjobhistory.job_id)
WHERE Monitor.dbo.SQLJobs.ServerIP = @serverIP
AND msdb.dbo.sysjobs.job_id = @JobID
AND msdb.dbo.sysjobhistory.run_date = (SELECT MAX(run_date) FROM msdb.dbo.sysjobhistory)
AND msdb.dbo.sysjobhistory.run_time = (SELECT MAX(run_time) FROM msdb.dbo.sysjobhistory)
AND msdb.dbo.sysjobhistory.step_name <> '(Job outcome)'
我在哪裏可以添加其他JOIN以使此查詢有效?如果我需要在投票之前添加更多信息,請告訴我。
請問您可以與我們分享您的解決方案嗎? – 2011-09-26 08:26:19
我不知道是否有人對解決方案感興趣,但我已經弄明白了。 – Matt
如果你已經知道了,請馬上發佈解決方案 –