Herhangi bir login oluşturup bu login’le sql server’a giriş yaptıktan sonra bu login tüm veritabanlarını görür ama yetkili olmadığı veritabanlarına tıkladığı zaman hata mesajıyla karşılaşır.

Login oluşturmuş olduğum veritabanına yetkili olduğu için herhangi bir sıkıntı ile karşılaşmaz sadece veritabanı bazlı vermiş olduğumuz yetkiler çerçevesinde çalışır
Herhangi bir veritabanında yetkisi yoksa yukarıdaki resimde görmüş olduğumuz gibi hata mesajı ile karşılaşılmaktadır. Bu login’imizin diğer yetkili olmadığı databaseleri görmesini engellemek için bir yetkilendirme yapalım.
Bu yetkilendirme işini ise S1\TEST administrator kullanıcımız ile AGENT1 login’imiz üzerinde yapıyoruz.

Administrator kullanıcıyla giriş yaptıktan sonra view any database bölümünde deny diyoruz.
AGENT1 kullanıcısını S1\TEST sunucusu üzerinde database’leri görmesinin önüne geçiyoruz.

Vermiş olduğumuz yetkiler sonucu tüm db’ler gitti. Kullanıcının db_owner yetkisine sahip olduğu veritabanı bile, select çektiğimizde gelmez çünkü sol üst tarafta baktığımızda öyle bir db yok.

Aşağıdaki komut ile YUNUS veritabanının sahibini AGENT1 kullanıcısı olduğunu belirtiyoruz. Aşağıdaki komut AGENT1 kullanıcısını YUNUS veritabanında db_owner yetkisi verilmektedir. Önceki yetkileri veritabanı altındaki kullanıcıyı sildirterek kaldırtır.
USE master;
GO
ALTER AUTHORIZATION ON DATABASE::YUNUS TO AGENT1;
GO
SERVER bazında kullanıcının belirtilen veritabanı üzerinde yetkisini olmasını sağlıyoruz

Bu hatayı almamızın sebebi YUNUS veritabanına AGENT1 kullanıcısı önceden yetkilendirilmiş olmasıdır. Bunun için bu veritabanı altında bulunan AGENT1 user’ını siliyorum.

Sildikten sonra tekrar komutumu çalıştırıyorum. Tekrar söylemek gerekirse aşağıdaki komut veritabanı sahipliğini değiştirir.

Şimdi tekrar AGENT1 kullanıcısıyla giriş yapalım.

Yukarıdaki veritabanı altındaki kullanıcıyı silip yukarıdaki komutla oluşturduktan sonra tekrar login’imin yetkilerine baktığımda önceden vermiş olduğum role’ün sapa sağlam olduğunu görmekteyim.

Çalışan sistemlerde kısa süreliğine bir kesinti olacaktır. Ayrıca yukarıda görüldüğü gibi veritabanı tam yetkili olmaktadır. Yoksa kullanıcının önceki veritabanındaki yetkileri manuel verilmektedir.
Başka bir makalede görüşmek dileğiyle..
“Görmez misin, varlığının kanıtlarından bir kısmını size göstersin diye denizde gemiler Allah’ın lutfuyla nasıl yüzüp gidiyor! Bunda çok sabreden, çok şükreden herkes için açık işaretler vardır.”Lokman-31