Kullanıcılar SSMS'de varsayılan olmayan şemadaki tabloları görüntüleyemez


10

VIEW DEFINITIONKullanıcılarımdan biri için izni şema düzeyinde uygun şekilde ayarlamakta sorun yaşıyorum . Şemayı oluşturdum TestSchemave bazı tablolar ekledim. Kullanıcı şu anda izin erişim ayarlanır ve tablo (değiştirme sahiptir SELECT, UPDATE, DELETEile, vs.) dbo_datareaderve dbo_datawriterrolleri. Ancak, SSMS nesne gezginindeki tablolardan hiçbirini göremezler.

Tanımları görüntülemek için izin vermeye çalıştım:

grant view definition on SCHEMA :: [TestSchema] to [User]

Bu işe yaramadı. Tablo düzeyinde izin ayarlamayı denedim:

grant view definition on [TestSchema].[NewTable] to [User]

Bu da işe yaramadı. Sonra sadece battaniye bağışını denedim:

grant view definition to [User]

Ve bu işe yaradı ; artık TestSchemaerişememeleri gereken diğer şemaların yanı sıra görebiliyorlar .

Buradaki amacım, kullanıcının belirli bir şemadaki tüm tabloları görüntülemesine izin vermektir. Bunu nasıl başarabilirim? Bunu varsayılan olarak yapabilmem gerekirse , neden yapamadığımı bulmak için hangi izinlere bakmalıyım?


2008R2 örneğimde db_datareader veya db_datawriter verdiğimde tüm şemaları görebilirler. Aradığın şeyin farkında değilim ama kurulumun ve benimki arasında önemli bir fark olduğu için gerçekten test edemiyorum. Sürüm farklı olan veya başka bir güvenliği değiştirilmiş mi?
cfradenburg

@cfradenburg - Söylemesi zor; Bu BT tarafından yönetilen bir sunucudur, bu yüzden ne yaptıklarından emin değilim ve bir SQL Server acemi değilim, bu yüzden ne aradığımı bilmiyorum. Sanırım sorumun bir kısmı, diğer izinler / roller / ??? bunun izinlerle düzeltilip düzeltilemeyeceğini belirlemek için arama yapmalıyım?
eykanal

Kullanıcı tabloları sorgulayabilir mi? Sorgulayabilirlerse, SSMS içinde bir sorun olabilir.
user9164

@ user9164 Evet, kullanıcılar olabilir tablolar sorgulamak; bu yalnızca SSMS içinde görüntülenme meselesidir.
eykanal

Yanıtlar:


11

Kısa cevap: Eşdeğerlerini kullanmayın db_datareaderveya db_datawriterreddetmeyin. Yalnızca geriye dönük uyumluluk içindir. Bunları kullanmak karşılaştığınız gibi sorunlara neden olacaktır.

Ana Alice'e şema Satış'ta tüm tablo değerli nesnelere SELECT, INSERT, UPDATE ve DELETE izinleri vermek istiyorsanız aşağıdakileri kullanın.

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::Sales TO Alice ;

Ana Alice'e tüm şemalardaki tüm tablo değerli nesnelere SELECT, INSERT, UPDATE ve DELETE izinleri vermek istiyorsanız aşağıdakileri kullanın.

GRANT SELECT, INSERT, UPDATE, DELETE TO Alice ;

Daha sonra meta veri görünürlüğü doğru şekilde çalışır.


'Geri uyumluluk' biti için bir kaynağınız var mı? Şemaların kullanımdan kaldırıldığını biliyorum, ancak roller hakkında hiçbir şey bulamıyorum.
Stijn

0

Diğer izinlere, soruna neden olan bir yerde inkar edilebileceği prensiplerine bir göz atın. Bir inkarın her zaman bir hibenin tepesine uygulanacağını unutmayın. Ve servriniz olmadığı için, hesapta BT borçlarının kurmuş olduğu bir şey olabilir.

Sunucu seviyesi için böyle bir şey kullanın:

    use master
    go
    SELECT a.*,b.name as 'Login ID' FROM sys.server_permissions as A inner join 
    sys.server_principals as B on a.grantee_principal_id = b.principal_id
    where b.name = 'login ID of the account'
    GO

Ve veritabanı düzeyinde böyle bir şey

SELECT a.*,b.name as 'Login ID' FROM sys.database_permissions as A 
inner join sys.server_principals as B on a.grantee_principal_id = b.principal_id
where b.name = 'test'
GO

Yorum için teşekkürler, Pazartesi günü işe geri döndüğümde bunu deneyeceğim.
eykanal

0

SQL Server'ımızı 2008R2'den 2014'e yükselttiğimde bu oldu. Db_datareader veya db_datawriter veya inkar eşdeğerleri 2008R2'de mükemmel çalışıyor, ancak 2014'te çalışmıyor.

SQL Server 2014'te izin verme örneği

Kullanıcı Alice'e şema Satışındaki tüm tablo değerli nesnelere SELECT, INSERT, UPDATE ve DELETE izinleri vermek istiyorsanız aşağıdakileri kullanın.

HİBE SEÇ, EKLE, GÜNCELLEME, ŞEMA SİL :: Alice'e Satış; Ana Alice'e tüm şemalardaki tüm tablo değerli nesnelere SELECT, INSERT, UPDATE ve DELETE izinleri vermek istiyorsanız aşağıdakileri kullanın.

Alice'e HİBE SEÇ, EKLE, GÜNCELLE, SİL; Daha sonra meta veri görünürlüğü doğru şekilde çalışır.

Referans [Greenstone Walker].


1
Sundeep, lütfen sadece link vermek yerine bir cevabı açıklamaya çalışın. Yardıma ihtiyacınız olursa site turuna
göz
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.