如何授予對數據庫中所有表/過程的選擇/更新/插入/執行權限?創建角色?授予數據庫所有操作的權限
因爲我想有客人(全部選擇許可給一些表),用戶(只能選擇,更新,插入權限表)和管理員(所有權限到數據庫中的所有對象)
如何授予對數據庫中所有表/過程的選擇/更新/插入/執行權限?創建角色?授予數據庫所有操作的權限
因爲我想有客人(全部選擇許可給一些表),用戶(只能選擇,更新,插入權限表)和管理員(所有權限到數據庫中的所有對象)
方法1)有用當沒有大的時候。的用戶。
GRANT SELECT, INSERT, DELETE, UPDATE on SCHEMA::SchemaName to Principal
--often DBO模式爲
爲主體,這是遠遠preferrable使用一個角色,而不是一個單一的用戶,除非你只是有幾個用戶,它通常簡化了管理。
現在,如果添加了實用程序模式,則用戶無法訪問數據,但是,如果將表添加到SchemaName模式中,它們將自動具有訪問權限。
方法2)在用戶很少的情況下很有用。
如果您需要訪問數據庫中的所有表,請將用戶添加到db_datareader
和db_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
我將創建角色。或者特別是一個角色,因爲已經爲您描述爲「客人」(即公共角色)和管理員(即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
我不明白。如果我想添加用戶作爲guest,我需要寫'exec sp_addrolemember'public','Joe''?(for admin - 'db_owner')? – lapots
對於公衆,沒有;每個人默認都是公共角色的成員(儘管您必須將他們添加爲數據庫中的用戶)。但是,對於管理員用戶,您可以將它們添加到db_owner角色中。希望你有一個AD組,你可以添加爲用戶而不必管理個人。 –