2011-09-19 5 views
0

여러 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을 추가 할 수 있습니까? 투표를하기 전에 더 많은 정보를 추가해야하는지 알려주십시오.

+0

해결책을 알려 주실 수 있습니까? –

+0

솔루션에 관심이있는 사람이 있는지는 알 수 없지만 알아 냈습니다. – Matt

+0

Matt 당신이 알아 냈어면 솔루션을 게시하시기 바랍니다 –

답변

0

죄송합니다. 잠시 후 죄송합니다. 다른 도메인의 두 서버에서 sys 작업을 쿼리하려고하기 때문에 내 쿼리가 작동하지 않습니다.

두 서버의 sys 작업에서 데이터를 가져와 하나의 형식으로 데이터를 표시하려면 서버를 연결해야했습니다.

http://msdn.microsoft.com/en-us/library/ff772782.aspx