Loginlere Job Çalıştırma Yetkisi Vermek
Makalemize başlamadan önce SQL Login’in nasıl oluşturulup yetkilendirildiğini detaylı olarak incelemeniz için “Login oluşturmak ve yetkilendirmek” isimli makalemi okumanızı tavsiye ederim.
Job’lar üzerinde yetki vermek için, yetkilendirmek istediğimiz login’e msdb veritabanındaki bazı veritabanı rollerini vermemiz gerekiyor. Job çalıştırmak için gerekli veritabanı rolleri aşağıdaki gibidir.
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
Fakat bu yetkileri verdiğinizde kullanıcı job’larınız üstünde istemediğiniz değişiklikler yapabilir. Msdb veritabanındaki bu rollerin detaylarını “SQL Server Agent Rolleri” isimli makalemde bulabilirsiniz.
Bazen bir login’e sadece bir job’ı çalıştırma yetkisi vermeniz gerekebilir. Böyle bir durumda aşağıdaki script yardımıyla bir stored procedure oluşturup, yetki vermek istediğimiz login’e bu stored procedure üzerinde execute yetkisi vererek ihtiyacınızı karşılayabilirsiniz.
use msdb GO create procedure dbo.JobCalistir with execute as owner as exec sp_start_job @job_name = 'Çalıştırmasını istediğiniz job ismi'
Yukardaki stored procedure’e yetki vermek istediğimiz login’e msdb veritabanında öncelikle public yetkisi tanımlıyoruz. “Login oluşturmak ve yetkilendirmek” isimli makalemde detayları bulabilirsiniz. Daha sonra msdb veritabanında oluşturduğumuz stored procedure’e sağ tıklayıp properties diyoruz.
Daha sonra permission sekmesine gelerek search ve Browse diyerek ilgili login’i seçiyoruz ve ok diyoruz. Ardından Execute yetkisini seçerek ok’e tıklıyoruz.
Yetki verme işlemini tamamlamış olduk. İlgili login bu stored procedure’ü aşağıdaki şekilde çalıştırarak job’ı başlatabilir.
exec msdb.dbo.JobCalistir