Bir login’in SQL Server Agent’a ulaşabilmesi için msdb veritabanındaki bazı veritabanı rolleri üzerinde yetkisinin olması gerekmektedir. Msdb veritabanındaki bu roller aşağıdaki gibidir.
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
Login yukarıdaki veritabanı rollerinden 1’ine sahipse ya da sysadmin yetkisi varsa sql agent’ı görebilir.
SQLAgentUserRole: SQL Server Agent veritabanı rollerinden en az yetkisi olan roldür. Bu rol, kullanıcıların yalnızca kendi oluşturdukları işlere erişmesine ve yönetmesine izin verir. Diğer kullanıcıların işlerine erişemezler veya düzenleyemezler. Temel yetkiler arasında iş oluşturma, düzenleme, silme ve kendi işlerini izleme bulunur.
SQLAgentReaderRole: SQLAgentUserRole’ün yetkilerinin tamamına sahiptir. Ekstra bazı yetkileri vardırBu rol, kullanıcıların kendi işlerine ek olarak sunucu genelindeki tüm SQL Server Agent işlerini okuyabilmesini sağlar. Diğer kullanıcıların işlerini görebilir, ancak bu işleri düzenleyemez veya çalıştıramaz. Kendi işlerini oluşturma, düzenleme, silme ve izleme yetkileri de vardır.
SQLAgentOperatorRole: SQLAgentReaderRole’ün yetkilerinin tamamına sahiptir. Bu rol en geniş yetkilere sahip olan roldür. Kullanıcılar tüm işlere erişebilir, iş başlatabilir, durdurabilir, düzenleyebilir ve silebilir. Ayrıca, iş uyarılarını ve SQL Server Agent hatalarını izleyebilir ve bu hatalarla ilgili bildirim alabilirler. Bu rol, genellikle sistem yöneticilerine ve veritabanı yöneticilerine atanır. Bu roller, veritabanı yönetiminde yetkilerin güvenli bir şekilde dağıtılmasını ve farklı kullanıcı gruplarının yalnızca ihtiyaç duydukları kadar erişim ve kontrol elde etmelerini sağlar.
Şimdi ilk başta herhangi bir database üzerinde yetkisi olmayan bir login(AGENT1) oluşturalım ve giriş yapalım.

Yukarıdaki resimde görüldüğü gibi yetkisiz bir login oluşturulduğunda sql agent’ı göremediğini görmekteyiz.
Şimdi bu login’e server bazında sysadmin hariç tüm rolleri verelim tekrardan bakalım sql agent’ımız geliyor mu?

Bu rolleri tanımlamama rağmen sql agent göremem aşağıdaki resimde olduğu gibi görmek için ise sadece sysadmin yetkisinin olması gerekmektedir. İlgili loginin yetki verilmeden önceki durumu.

Sysadmin yetkisi verdikten sonra tekrar bakalım sql agent’ın geldiğini görmekteyiz.

Kullanıcı veritabanı bazında bazı yetkiler verildiğinde ne gibi sonuçları oluyor onu gözlemleyelim.
Server role public yetkisinde olan herhangi bir login’e veritabanı altında tüm yetkiler verildiğinde sql agent servisinin gelmediğini görmekteyiz.


Login’imizin veritabanı bazlı yetki için user mapping kısmından sadece msdb veritabanın seçilmesiyle sql agent servisinin kullanılır olduğunu görmüş olacağız. Server role public.

Sınırlı yetkilere sahip agent role verdiğimde agent servisinin geldiğini görmüş oluyorum.


SqlAgent servisimiz gelmiş oldu. Dikkat edersek agent servisimiz sınırlı çünkü sınırlı kullanıcı olan SQLAgentUserRole seçmiştik. Şimdi bu role üst seviye bir role yapalım farkı görelim.
Bu sefer farklı bir yoldan yetki verelim msdb veritabanı altında security bölümünde kullanıcımız gözüküyor buna bazı ayarlamalar yapabiliriz.

Şimdi yetki işlemlerine geçelim

Tekrardan ilgili kullanıcıyla login olduktan sonra sql agent bölümüne bakarsak daha kapsamlı geldiğini görmüş olacağız. 3. Seçenek olan SQLAgentOperatorRole diğer roller gibi seçilmekte ve geniş yetkiye sahip olan sql agent servis rolüdür.
Bundan sonraki makalede bir login’in sql agent’ı göremeyip herhangi bir job çalıştırmasını görmüş olacağız. Bir sonraki makalede görüşmek dileğiyle..
“Göklerde ve yerde olan her şey yalnız Allah’ındır; kuşkusuz hiçbir şeye ihtiyacı olmayan ve her türlü övgüye lâyık olan yalnız Allah’tır.”Lokman-26