Sql user with login veritabanı altında oluşturulan user’ın instance üzerindeki herhangi bir login’i refarans göstererek veritabanı altında aynı isimde veya farklı isimde oluşturulan user’dır. Herhangi bir logine impersonete yetkisi vermeden direk ilgili loginin veritabanına user olarak atanmasıdır. Bu yapı aslında biz ilgili logine yetki verdiğimizde veritabanı altına gelen user veya isminin değiştirilmiş şeklidir.

User isminin değiştirilmesi ile farklı bir user isimde oluşturulabilir.

Bu yaptığımız aslında şöyle ifade edebiliriz normalde hiyerarşi yukarıdan aşağıya doğruyken Sql user with login ile oluşturduğumuzda aşağıdan yukarıyadır.
İlk başta bir login oluşturalım.

LOGIN2 kullanıcısına TEST veritabanında public yetkisi veriyorum.

TEST veritabanı üzerinde Sql user with login oluşturulmak isteniyorsa o veritabanı seçilir. Database>Security>Users>NewUser seçilir


Sql user with login yapısı için tanımlanacak kullanıcının veritabanı bazında herhangi bir yetkisinin olmasına gerek yoktur hangi yetkiyle oluşturulmuşsa login altına otomatikmen o yetkiler gelmiş olur.

Burada yukarıdaki tüm ayarlamaları yaptıktan sonra oluşturma aşamasına geçtiğimde hata mesajıyla karşılaştım.

Yukarıdaki hatayı almamızın sebebi LOGIN2 loginin ilgili veritabanı altında public veya herhangi bir seviyede yetki verilmesidir. İlk başta dediğim gibi hiyerarşiyi aşağıdan yukarıya doğru kuruyoruz ama önceden tam tersi bir hiyerarşi sağlanmış.

Tekrarlayacak olursak sql user with login kavramı zaten LOGIN2 kullanıcısını referans göstererek bir user oluşturuyor bizde LOGIN2 kullanıcısına public vererek bu yapıyı oluşturmuşuz. Hata vermesinin sebebi bu.
Veritabanı altında security tabında user’ı sileceğimiz zaman hata mesajı ile karşılaştığımızda instance altındaki security tabındaki login bölümünden ilgili loginin veritabanı üzerinde yetkisi kaldırıldıktan sonra silinebilir veya başka bir sebepten dolayı. Yoksa hata mesajı ile karşılaşılmaktadır.

Bu login’i ilgili database altında sildikten sonra tekrar kurulum adımlarını yapıyorum.


Bu şekilde oluşturduktan sonra şimdi bu user ile bağlanıp tablomuza select seçelim bakalım ne gibi bir sonuçla karşılaşacağız. Select çekmeden önce LOGIN2 kullanıcımıza bakalım.

User’ı oluşturduğum zaman kendisi LOGIN2’ye db_owner yetkisi vermiş oldu. Normalde yukarıdan aşağıya doğru oluşturduk bu sefer tam tersi bir işlemler karşılaşıyoruz.

Veritabanı altındaki oluşturduğumuz kullanıcıya hangi yetki verirsek loginde(LOGIN2) o yetkilere bürünmüş oluyor yukarıda ve aşağıdaki resimde gözüktüğü gibi.

User ve loginimiz db_owner

Yukarıdaki örnekten sonra bir iki örnek daha yapıp pekiştirelim. User üzerinde db_owner yetkisi kaldırılır. loginimiz public yetkisinde. İlk başta LOGIN2 kullanıcısıyla login olduktan sonra backup almaya çalıştığımda backup’ı başarılı bir şekilde aldığını gözlemleyeceğiz. Diyebilirsiniz Login’imiz public yetkiye sahip nasıl olur. Sebebi ise oluşturduğumuz user üzerinden backup yetkisi vermiş olmamız. Aşağıdaki resimde ilgili user’da grant ikonunun işaretlendiğini görebiliriz.

Şimdi LOGİN2 kullanıcısı ile login olalım ve backup almaya çalışayım.

Yukarıdaki yetkiyle LOGIN2 veritabanı üzerinde backup işlemini gerçekleştirmiş oldum. Sebebi ise yukarıda login altında oluşturulan User’a Backup alabilme yetkisi vermiştik. Şimdi ise oluşturmuş olduğum user’a backup alamasın diye Deny yetkisi veriyoruz. Bu işlemden sonra LOGIN2 ile backup almaya çalışayım ve sonucu gözlemleyelim.

Backup alınamadığını görmüş olduk. Şimdi tekrar user altından backup database deny’i kaldıralım.

Şimdi oluşturmuş olduğum loginle giriş yapayım bakayım test veritabanına Backup alabiliyor mu ?

Backup alındığını görmüş oluyoruz.


İlgili user’a select seçme yetkisinin elinden alırsak login bile select seçemez. Sql server her zaman minumum yetkileri kullanır.

Başka bir makalede görüşmek dileğiyle…
“Kim de inkâr ederse artık onun inkârı seni üzmesin; çünkü onların dönüp gelecekleri yer yalnız bizim huzurumuzdur; yaptıklarının sonucunu kendilerine bildireceğiz; Allah kalplerin derinliklerindekini dahi çok iyi bilmektedir.”Lokman-23