Bu yazıda SQL Server 2005 ile birlikte gelen ve özellikle birçok Job tanımlanmış sistemlerde kolaylık sağlayacak bir özelliği paylaşmak istiyorum. Tanımlanmış olan bir schedule’in birden fazla Job tarafından paylaşılabiliyor olması. Özellikle birçok Job’ın olduğu durumlarda bazılarını aynı anda başlatma ihtiyacımız olabilir. Bunlar için tek bir zaman tanımlayıp gerektiği durumda zaman ayarlarını güncelleme imkanımız olabilmektedir.
SQL Server 2005 ile birlikte Job’lara ait tarihçeleri, zaman ayarlarını, çalışma durumlarını tek bir ekranda görme şansına sahibiz. ilgili ekrana “SQL Server Agent » Jobs” bölümünü sağ tıklayarak erişebiliriz.
Seçili menüyü tıklayarak “Manage Schedules” ekranını açalım.
Bu ekranda sunucu üzerinde tanımlı tüm schedule’lerin içeriğini, hangi Job’lar tarafında kullanıldıklarını görebilir ve gerekirse özelliklerini değiştirebiliriz. Bu ekranda NEW düğmesini tıklayarak “Ornek-Zaman-1¨ isminde ve ayarları aşağıda gösterilen bir zaman tanımlayalım.
Bu zaman nesnesi “Her Pazar saat başı” tetiklenecektir. Bu schedul’i aşağıdaki gibi sp_add_schedule prosedürü yardımıyla da oluşturabiliriz.
EXEC msdb.dbo.sp_add_schedule @schedule_name=N'Ornek-Zaman-1', @enabled=1, @freq_type=8, @freq_interval=1, @freq_subday_type=8, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=1, @active_start_date=20110406, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959
Kayıt işleminden sonra “Ornek-Zaman-1¨ nesnesini önceki ekranda görüldüğü gibi zaman listesinde görebiliriz. Daha önce oluşturduğumuz Job’ları bu schedule’e bağlamak için schedule karşısındaki “Jobs in schedule” kolonunu tıklamamız yeterli olacaktır. Bu kolonda o zaman nesnesinin kaç tane Job tarafından kullanıldığı yazılmaktadır. Bu rakamı tıklayarak istediğimiz Job veya Job’ları bu nesneye bağlayabilir veya daha önce bağlı olanlar için enable veya disable edebiliriz. Bu zaman nesnesine ait ayarları değiştirdiğimizde doğal olarak tüm bağlı Job’lar bundan etkilenmiş olacaktır.
Bir Job’ı yeni veya daha önce tanımlanmış bir schedule nesnesine bağlamanın diğer ekranı da Job’ı sağ tıklayarak açılan “Job Properties” ekranındaki Schedules bölümüdür.
Bu ekrandaki PICK düğmesini tıklayarak daha önce tanımlı zaman nesnelerini bu Job ile ilişkilendirebiliriz. Bu işlemi T-SQL ile yapmak için sp_attach_schedule prosedürü kullanılır.
EXEC msdb.dbo.sp_attach_schedule @job_name = N'Ornek-Job-1', @schedule_name = N'Ornek-Zaman-1'
Aynı isimde Job veya Schedule tanımlanmış olabileceği için bu prosedüre sözkonusu nesnelerin ID’lerini göndermek daha mantıklı olacaktır.
EXEC msdb.dbo.sp_attach_schedule @job_id=N'fc38bf54-cb49-4e50-af03-f63caabc2246',@schedule_id=26
Schedule ve Job’lara ait ID’leri öğrenmek için msdb veritabanının altındaki sysschedules ve sysjobs tabloları kullanılabilir.