Bir kullanıcıya veritabanının sistem dışındaki tüm görünümlerine erişim izni vermenin bir yolu var mı?


9

SQL Server'da, belirli bir veritabanında bir kullanıcı var ve onlara yalnızca veritabanının sistem dışı görünümlerinin tümüne erişim izni vermem istendi. Bunun tür görünümünün güvenliğini düzenleyerek ve her birine seçme izni vererek yapılabileceğine inanıyorum, ancak çok, birçok görünüm var. Bunu başarmanın daha etkili bir yolu var mı?

Yanıtlar:


8

Orada hiçbir şekilde bu tür sözdizimi

GRANT SELECT ON ALL::Views TO SomeUser 

Tek GRANT SELECTtek nesneler , şemalar veya tüm veritabanındaki izinleri kullanabilirsiniz , ancak nesne türüne göre filtrelenmemiş, yalnızca Görünümleri içerecek şekilde. Bu tür adhoc görev için muhtemelen adlı yeni bir rol oluştururdum ViewReader, kullanıcıyı bu role ekleyin, ardından SSMS'de çalıştırın

SELECT 'GRANT SELECT ON ' + 
          QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + 
      ' TO ViewReader;'
FROM sys.views
WHERE is_ms_shipped = 0

GRANTgerekli izinlerle çalışacak bir komut dosyası oluşturmak için .


Son derece zarif cevap için teşekkür ederim. Senaryo biraz kafamın üzerinde, bu yüzden uygulamaya başlamadan önce biraz okuma yapacağım. Tekrar teşekkürler.
Christopher Garcia

1
@lush - Betik sadece incelemeniz, kopyalamanız, yapıştırmanız ve çalıştırmanız için bazı komutlar verir. Sonucu birleştirmek için daha ayrıntılı bir şey yapabilirsiniz ve EXECancak bir kerelik görev için uğraşmazdım.
Martin Smith

Şimdi anlıyorum, bu sorun için mükemmel bir çözüm, teşekkürler!
Christopher Garcia

4

Benim durumumda başka bir yaklaşım izledim. Ben de öyle yaptım:

  1. Bir giriş oluşturun ve bir veritabanıyla eşleyin.
  2. Bir veritabanına gidin ve örneğin Public_View adlı bir şema oluşturun. Bu şemanın sahibi, görünümlerin başvuracağı tablolarla aynı olmalıdır.
  3. Yeni kullanıcıya yeni şemaya erişim izni verin.
  4. Yeni şemada istediğiniz sayıda görünüm oluşturun; yeni kullanıcı bunlara erişebilir.

İyi olan şey, yeni kullanıcının tablolara erişemeyeceği, tabloları bile göremeyeceği.

Umut ediyorum bu yardım eder.


4
+1 Benim için bu çözümle ilgili iyi olan şey, yeni görünümler oluşturulduğunda açıkça izin atamaya gerek olmamasıdır.
Martin Smith
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.