none
Kullanıcı Girişindeki Veritabanlarını Listeleme RRS feed

  • Soru

  • Merhaba Arkadaşler.

    Ben SQL Server Authentication ile bağlandığım bir connection da benim kullanabileceğim veritabanların isimlerini listelemek istiyorum nasıl yapabiliim ?

    Örneğin;

    Server = .;

    UserName = Abdül;

    Password = Abdül;

    Bu bilgiler ile giriş yapıyorum. "select * from sys.Databases" bu kodu çalıştırıyorum ama sistemdeki tüm database nameler çıkıyor. Oysaki ben bu kullanıcı ile sadece AbdülünDatabase'si ni kullanabiliyorum. Yani sadece "AbdülünDatabase'si" şeklinde nasıl listeleyebilirim ?

    27 Ağustos 2012 Pazartesi 20:41

Yanıtlar

  • Arkadaşım haklısın ama mesela bir girişin yetkili olduğu birçok database olabiliyor. Ben o girişin yetkili olduğu bütün database name'leri listelemek istiyorum.

    Merhaba,

    SQL Server Management Stdio yapısı gereği tam olarak sizin ihtiyacınızı karşılamıyor. Çünkü SQL Server Management stdio tasarlanırken hızlı açılması için veritabanı listelenerirken listelenecek olan veritabanlarına ait kullanıcıların giriş yetkileri var mı yok mu diye jkontrol etmez. hatta erişilemez durumda olan Offline veritabanları kullanıcılara listelenir. Fakat sizin dediğinizi dolaylı yönden yapabilirsin. Çünkü Management stdioda bir kullanıcnın bir veritabanını görmesi için VIEW database yetkisi verilmiş olmalıdır ve varsayılan davranış biçimi olan ve her kullanıcının uyesi oldugu public rolune bu yetki verilmiştir. Eğer bir kullanıcının tum veri tabanlarını görmesini istemiyorsanız aşağıdaki komutu caliştirabilirsiniz.

    USE master
    Go
    DENY VIEW ANY DATABASE TO [kullanıcıAd]
    GO

    Fakat yukarıdaki kodu çalıştırdığınzda ilgili kullanıcı sorgularda kullanabiliyor olmasına rağmen sadece master ve tempdb sistem veritabalarını görebilecektir. Bunun dışında yetkisi olduğu veritabanlarını göremez. Birde -on bir noktaya değinmek istiyorum. Kullanıcı eğer veritabbanının ownerı ise master ve tempd yanında o veritabanınıda görecektir.

    Kolay gelsin


    SQL Server 2012 Kitabımı incelediniz mi?

    28 Ağustos 2012 Salı 10:55

Tüm Yanıtlar

  • Arkadaş birde bunu dene      Select Name from sys.databases where name = 'AbdülünDatabase'  
    27 Ağustos 2012 Pazartesi 21:53
  • Arkadaşım haklısın ama mesela bir girişin yetkili olduğu birçok database olabiliyor. Ben o girişin yetkili olduğu bütün database name'leri listelemek istiyorum.

    28 Ağustos 2012 Salı 08:47
  • Arkadaşım haklısın ama mesela bir girişin yetkili olduğu birçok database olabiliyor. Ben o girişin yetkili olduğu bütün database name'leri listelemek istiyorum.

    Merhaba,

    SQL Server Management Stdio yapısı gereği tam olarak sizin ihtiyacınızı karşılamıyor. Çünkü SQL Server Management stdio tasarlanırken hızlı açılması için veritabanı listelenerirken listelenecek olan veritabanlarına ait kullanıcıların giriş yetkileri var mı yok mu diye jkontrol etmez. hatta erişilemez durumda olan Offline veritabanları kullanıcılara listelenir. Fakat sizin dediğinizi dolaylı yönden yapabilirsin. Çünkü Management stdioda bir kullanıcnın bir veritabanını görmesi için VIEW database yetkisi verilmiş olmalıdır ve varsayılan davranış biçimi olan ve her kullanıcının uyesi oldugu public rolune bu yetki verilmiştir. Eğer bir kullanıcının tum veri tabanlarını görmesini istemiyorsanız aşağıdaki komutu caliştirabilirsiniz.

    USE master
    Go
    DENY VIEW ANY DATABASE TO [kullanıcıAd]
    GO

    Fakat yukarıdaki kodu çalıştırdığınzda ilgili kullanıcı sorgularda kullanabiliyor olmasına rağmen sadece master ve tempdb sistem veritabalarını görebilecektir. Bunun dışında yetkisi olduğu veritabanlarını göremez. Birde -on bir noktaya değinmek istiyorum. Kullanıcı eğer veritabbanının ownerı ise master ve tempd yanında o veritabanınıda görecektir.

    Kolay gelsin


    SQL Server 2012 Kitabımı incelediniz mi?

    28 Ağustos 2012 Salı 10:55
  • daha detaylı bilgiye bu adresten erişebilirsiniz.

    SQL Server 2012 Kitabımı incelediniz mi?

    28 Ağustos 2012 Salı 11:48