여러 SQL Server에서 SQL 작업을 모니터링하고 웹 양식에 세부 정보를 추가하는 방법을 찾으려고합니다. 나는 App Pools, Services, and 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)";
그의 쿼리가 좋아 보인다 : 나는이 질문을 발견 나는 등
작업 이름, 실행 시간, 실행 날짜, 상태, 같은 것들을 저장하기 위해 만든 격자가 하지만 여러 서버를 모니터링 할 수 있도록 서버 IP가 포함 된 데이터베이스 (dbo.Monitor)의 테이블을 하나 더 추가해야합니다. 여러 위치에서 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을 추가 할 수 있습니까? 투표를하기 전에 더 많은 정보를 추가해야하는지 알려주십시오.
해결책을 알려 주실 수 있습니까? –
솔루션에 관심이있는 사람이 있는지는 알 수 없지만 알아 냈습니다. – Matt
Matt 당신이 알아 냈어면 솔루션을 게시하시기 바랍니다 –