2012-10-06 117 views
1

如何授予對數據庫中所有表/過程的選擇/更新/插入/執行權限?創建角色?授予數據庫所有操作的權限

因爲我想有客人(全部選擇許可給一些表),用戶(只能選擇,更新,插入權限表)和管理員(所有權限到數據庫中的所有對象)

回答

3

方法1)有用當沒有大的時候。的用戶。
GRANT SELECT, INSERT, DELETE, UPDATE on SCHEMA::SchemaName to Principal --often DBO模式爲

爲主體,這是遠遠preferrable使用一個角色,而不是一個單一的用戶,除非你只是有幾個用戶,它通常簡化了管理。

現在,如果添加了實用程序模式,則用戶無法訪問數據,但是,如果將表添加到SchemaName模式中,它們將自動具有訪問權限。

方法2)在用戶很少的情況下很有用。
如果您需要訪問數據庫中的所有表,請將用戶添加到db_datareaderdb_datawriter角色。其簡短的&簡單。

USE [DBName] 
GO 
EXEC sp_addrolemember N'db_datawriter', N'UserName' 
GO 
EXEC sp_addrolemember N'db_datareader', N'UserName' 

參考:http://social.msdn.microsoft.com/Forums/en/transactsql/thread/1489337c-56c9-4bb8-9875-3a75be7596be

3

我將創建角色。或者特別是一個角色,因爲已經爲您描述爲「客人」(即公共角色)和管理員(即db_owner角色)的角色已經存在角色。但讓我們把它變成現實吧。

create role [Users]; 

grant select on tbl_1, tbl2, tbl3 to [public]; 
grant select, insert, update, delete to [Users]; 

exec sp_addrolemember @membername = 'yourdomain\Users', @rolename='Users' 
exec sp_addrolemember @membername = 'yourdomain\Admins', @rolename='db_owner' 
--no need to add people to public; everyone's a member by default 
+0

我不明白。如果我想添加用戶作爲guest,我需要寫'exec sp_addrolemember'public','Joe''?(for admin - 'db_owner')? – lapots

+0

對於公衆,沒有;每個人默認都是公共角色的成員(儘管您必須將他們添加爲數據庫中的用戶)。但是,對於管理員用戶,您可以將它們添加到db_owner角色中。希望你有一個AD組,你可以添加爲用戶而不必管理個人。 –

相關問題