1. Ana Sayfa
  2. SQL Server
  3. SQL Server Management Studio’da Veritabanı Listesi Nasıl Düzenlenir?

SQL Server Management Studio’da Veritabanı Listesi Nasıl Düzenlenir?

SQL Server’da bir kullanıcı oluşturmanızdan sonra, kullanıcı SQL Server Management Studio’ya Login olduğunda yetkisi olsun ya da olmasın tüm veritabanlarını görüntüleyebilecektir. İçlerine girip herhangibir değişiklik yapamayacak olsa bile DB isimlerini görmesi bile çoğu zaman istenmeyen bir durumdur. Peki, bunları düzenleyip sadece yetkisi olduğu veritabanlarının görüntülenmesini nasıl sağlarız?

Örnek ile detaylandıracak olursak ;

Hosting Firması işletiyorsunuz ve Müşterilerinize SQL Server Database tanımlamaları için yetki veriyorsunuz.  Aynı zamanda farklı bir müşterinizde aynı servera kullanıyorlar ve onlarında sizlerin izin verdiği yetkiler dahilinde Veritabanı oluşturabiliyorlar ve birbirlerinin oluşturdukları veritabanlarını görüntüleyebiliyorlar.

Peki Neden SQL Server da Login olabilen bütün kullanıcılar Object Explorer üzerinde bütün Databaseleri görüntülerler?

Cevabı aslında basit;

SQL Server her kullanıcımızın üye olduğu Public adında bir rol vardır ve varsayılan olarak bu role VIEW ANY DATABASE yetkisi verilmiştir. Yani bu role sahip her kullanıcı yetkisi olmasa bile erişim hakkı olmaz ama tüm veritabanlarının listesini Object Explorer penceresinde görebilmektedir. Bu nedenle eğer tüm kullanıcılardan Veritabanı listesinin gizlemek istiyorsak Public rolünden bu yetkiyi almamız gerekmektedir. Aynı şekilde sadece bir kullanıcıdan da bu yetkiyi alarak sadece bir kullanıcının tüm veritabanları görmesini engelleyebiliriz.

Örnek Uygulama ;


Resim-1

Oluşturduğumuz Login nesnesi SQL Server’a Login olduğunda Object Explorer’da tüm DB’lerin listesini görüntüleyebilecektir.


Resim-2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

— Aşağıdaki Sorgu ile test isimli DB üzerinde okuma yetkisi tanımlıyoruz.

USE [test]

GO

CREATE USER testYetki FOR LOGIN [testYetki]

GO

ALTER ROLE [db_datareader] ADD MEMBER testYetki

GO

— Oluşturduğumuz Login nesnesinin tüm yetkilerini aldık.

USE [master]

GO

DENY VIEW ANY DATABASE to [testYetki]

–Şimdi ise oluşturduğumuz Login Nesnesinin belirtilen görüntüleyeceği DB’yi belirtiyoruz.

USE [test]

GO

DROP USER testYetki

GO

EXEC dbo.sp_changedbowner @Loginame = N’testYetki’, @map = false

GO


Resim-3

Operasyon tamamdır   artık user sadece kendisinin yetkisi olduğu DB’leri görüntülüyor.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

Milenyumdan beri ilginç bir merak duygusu ile başlayan bilgisayar ve teknoloji dünyası merakı sayesinde eğitim yaşantımı doğup büyüdüğüm Düzce'de geçirdim. Sonrasında Düzce'nin kendimi geliştirmek adına yeterli imkanlara sahip olmadığından İstanbul'a gelip Bilge Adam Eğitim Kurumlarından Yazılım ve Veritabanı eğitimi aldım. Eğitimimi tamamlarken çeşitli Windows ve Web uygulamaları geliştirdim. Sırası ile Sentez Yazılım, Nebim Yazılım, Ciceksepeti, Doğan Holding, Kariyer.Net, TurkNet gibi firmalarında Yönetici / Müdür pozisyonlarında farklı ünvanlarda ( Yazılım Geliştirici / Raporlama ve Veritabanı Yöneticisi gibi) görev aldım. Şimdilerde ise DMC Bilgi Teknolojileri firmasının Kurucu Ortaklığını ve Veritabanı Danışmalığı Hizmeti vermekteyim.

Yorum Yap