SQL Server - nesneye karşı bütün bir şemaya izin vermek?


25

SQL Sever'de veritabanı izin yönetimi dünyasına gelince çok yeşilim.

Bir örneği basit tutalım.

Hesap 'admin' deyince A, B ve C şemalarının sahibi

A, B ve C şemaları altında yaratılan herhangi bir nesne (tablo / görünüm) üzerinde tam haklara sahip olmak istediğiniz (güncelleme / silme / ekleme / seçme / değiştirme) başka bir hesap 'minion' var.

Mümkün mü? Yoksa bu şemaların altına bir tablo / görünüm eklediğinizde her seferinde bir hibe ifadesi mi uygulamanız gerekiyor? (bana biraz aptal görünüyor).

Yanıtlar:


36

Var GRANTolan her şey ve o şemada varolan her şey için etkili izinler şema oluşturabilirsiniz.

Hema Şeması İzinleri

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;

Bundan başka, şema içindeki belirli bir nesne üzerindeki izinleri reddetmek istiyorsanız, bunu yapabilirsiniz.

Nesne İzinlerini Reddetme

DENY INSERT ON OBJECT::<schema>.<object> TO <user>;

1
Ayrıca şema veya kullanıcı adı özel karakterler içeriyorsa köşeli parantez kullanın. eg.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
Joshua Duxbury

Azure'da çalışmıyor mu, neden olduğu hakkında fikrin yok mu? (komutlar işe yarıyor, ama SSMS geldi ve "sen Db'nin sahibi değilsin ... blah blah blah. masayı kurtaramayabilirsin" der ve yeter ki, yapamazsın ('Veritabanı', '<db adı>', TheUserId, 'Tablo Oluştur' ve 'GRANT' ın state_desc izinlerini gösterir) Gerekli olan başka bir sihir var mı? Veya Azure sadece Dbo tarafından kullanılabilir mi?
Traderhut Games

13

Biraz daha basitleştirmek için, aradığınız işi yapmak için rolleri kullanabilirsiniz.

Rol için izinler atadığınızda, yalnızca rolü rol kullanıcıları ekleyebilirsiniz. Bu şekilde, bireysel kullanıcılar için izinleri yönetmeniz gerekmez. Kullanıcılar, rol için verilen izinleri devralır.

Aşağıda başlamanıza bir örnek:

 -- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
 ---- Grant access rights to a specific schema in the database
GRANT 
      SELECT, INSERT, UPDATE, DELETE, ALTER 

ON SCHEMA::dbo
      TO TableSelector 
GO

-- Add an existing user to the new role created 
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO

-- Revoke access rights on a schema from a role 
DENY ALTER  -- you can customize here ...
ON SCHEMA::dbo
      TO TableSelector 
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.