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