Script to find the failed jobs on all the servers
/*FINAL CODE*/
declare
@servername varchar(200),
@sql varchar(2000)
/* LOOP THROUGH THE SERVERS*/
if object_id('tempdb..#failedjobs') is not NULL
drop table #failedjobs
create table #failedjobs (servername varchar(200), jobname varchar(500))
declare server_list cursor for
select
servername
from
dbo.servers
where
enabled =1
and retired = '9999-12-31 00:00:00.000'
open server_list
fetch next from server_list into @servername
while @@fetch_status = 0
begin
set @sql = 'select
jh.server as server_name,
sj.name job_name
from
(select
jh.job_id as job_id,
max(convert(bigint,(convert(varchar(100), jh.run_date) + convert(varchar(100),jh.run_time) + convert(varchar(100),replicate(''0'',6 - len(jh.run_time)))))) as total_date_time
from
[' + @servername+ '].msdb.dbo.sysjobhistory jh
where
step_id= 0
group by
jh.job_id) j
inner join
['+ @servername + '].msdb.dbo.sysjobhistory jh
on j.job_id = jh.job_id
--and j.last_run_date = jh.run_date
and j.total_date_time = convert(bigint,(convert(varchar(100), jh.run_date)+ convert(varchar(100),jh.run_time) + convert(varchar(100),replicate(''0'', 6 - len(jh.run_time)))))
inner join
[' + @servername + '].msdb.dbo.sysjobs sj
on j.job_id = sj.job_id
where
jh.run_status = 0
and jh.step_id = 0
group by
jh.server,
sj.name'
insert into #failedjobs
Exec (@sql)
fetch next from server_list into @servername
end
select * from #failedjobs
close server_list
deallocate server_list
declare
@servername varchar(200),
@sql varchar(2000)
/* LOOP THROUGH THE SERVERS*/
if object_id('tempdb..#failedjobs') is not NULL
drop table #failedjobs
create table #failedjobs (servername varchar(200), jobname varchar(500))
declare server_list cursor for
select
servername
from
dbo.servers
where
enabled =1
and retired = '9999-12-31 00:00:00.000'
open server_list
fetch next from server_list into @servername
while @@fetch_status = 0
begin
set @sql = 'select
jh.server as server_name,
sj.name job_name
from
(select
jh.job_id as job_id,
max(convert(bigint,(convert(varchar(100), jh.run_date) + convert(varchar(100),jh.run_time) + convert(varchar(100),replicate(''0'',6 - len(jh.run_time)))))) as total_date_time
from
[' + @servername+ '].msdb.dbo.sysjobhistory jh
where
step_id= 0
group by
jh.job_id) j
inner join
['+ @servername + '].msdb.dbo.sysjobhistory jh
on j.job_id = jh.job_id
--and j.last_run_date = jh.run_date
and j.total_date_time = convert(bigint,(convert(varchar(100), jh.run_date)+ convert(varchar(100),jh.run_time) + convert(varchar(100),replicate(''0'', 6 - len(jh.run_time)))))
inner join
[' + @servername + '].msdb.dbo.sysjobs sj
on j.job_id = sj.job_id
where
jh.run_status = 0
and jh.step_id = 0
group by
jh.server,
sj.name'
insert into #failedjobs
Exec (@sql)
fetch next from server_list into @servername
end
select * from #failedjobs
close server_list
deallocate server_list
Comments
Post a Comment