Notification failed SQL Agent jobokra

Lusta embernek tartom magam (azért dolgozom sokat, hogy később ne kelljen, csak ez soha nem jön be), úgyhogy amikor szembesültem azzal, hogy az egyik SQL szerveremen van egy csomó job, aminél nincsen beállítva a figyelmeztetés, ha elbuktak, kitaláltam, hogy scriptből közelítem meg. Miután a msdb.sysjobs táblában nem találtam meg megnyugtató bizonyossággal mindazt, ami kell nekem, elővettem a régi trükköt: elindítottam a SQL Profilert, megnéztem, hogy mi a szöszt csinál az Enterprise Manager (ja, történelem előtti idők, van még SQL 2000 a bolygón).
Az eredmény: van egy sp_update_job nevű tárolt eljárás, amit használ a GUI. Én is ezt tettem, és bár nem nagy barátom, mégis a kurzorhoz nyúltam, mert még mindig szimpatikusabb volt, mint a dinamikusan összerakott kveri (azt a kurzornál és a triggernél is kevésbé szeretem). Megírtam a scriptet, működik 2005-ön is, 2008 most nincs a közelemben.

declare crJobs cursor
FOR

select name from msdb..sysjobs
-- where... ha szeretnénk szűrni
declare @job varchar(200)

open crJobs 
fetch next from crJobs into @job
while (@@fetch_status = 0)
BEGIN
PRINT @job + ' is edited'

EXEC msdb.dbo.sp_update_job @job_name=@job, 
		@notify_level_email=2, 
		@notify_level_netsend=2, 
		@notify_level_page=2, 
		@notify_email_operator_name=N'SQL DBA'

fetch next from crJobs into @job
END
close crJobs
deallocate crJobs 

Természetesen a @notify_email_operator_name paramétert a 18. sorban meg kell adjusztálni.

Leave a comment