C# 如何为多台服务器创建SQL作业网格?

C# 如何为多台服务器创建SQL作业网格?,c#,sql,stored-procedures,sql-job,C#,Sql,Stored Procedures,Sql Job,我试图找到一种方法来监视多个SQL服务器上的SQL作业,并将详细信息添加到web表单中。我已经用应用程序池、服务和任务完成了这项工作,但现在我还需要监控作业。我创建了一个网格来存储作业名称、运行时间、运行日期、状态等内容 我发现这个问题: 他的查询看起来不错,但我需要从数据库dbo.Monitor中再加入一个表,它包含一个服务器IP,这样我就可以监视多个服务器。我曾尝试在多个位置添加LEFT JOIN Monitor.dbo.SQLJobs,但从未奏效。以下是我正在运行的查询: @serverI

我试图找到一种方法来监视多个SQL服务器上的SQL作业,并将详细信息添加到web表单中。我已经用应用程序池、服务和任务完成了这项工作,但现在我还需要监控作业。我创建了一个网格来存储作业名称、运行时间、运行日期、状态等内容

我发现这个问题:

他的查询看起来不错,但我需要从数据库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)'

在哪里可以添加其他联接以使此查询正常工作?在投票否决我之前,请告诉我是否需要添加更多信息。

对不起,伙计们,我已经有一段时间没有检查这个了。我的查询无法工作,因为我正在尝试查询不同域中两台服务器上的sys作业

我必须链接服务器,以便从两台服务器的sys作业中获取数据,并以一种形式显示数据


我不知道是否有人对这个解决方案感兴趣,但我已经找到了答案。你能与我们分享你的解决方案吗?马特,如果你找到了答案,请发布解决方案
@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)'