如何授予数据库中所有表/过程的选择/更新/插入/执行权限?创建角色?
因为我想要来宾(对某些表的所有选择权限)、用户(仅对表的选择、更新、插入权限)和管理员(对数据库中所有对象的所有权限)
如何授予数据库中所有表/过程的选择/更新/插入/执行权限?创建角色?
因为我想要来宾(对某些表的所有选择权限)、用户(仅对表的选择、更新、插入权限)和管理员(对数据库中所有对象的所有权限)
方法 1)在数量很大时很有用。的用户。
GRANT SELECT, INSERT, DELETE, UPDATE on SCHEMA::SchemaName to Principal
--通常是用于模式的 DBO
对于 Principal 来说,最好使用一个角色而不是单个用户,除非您只有几个用户,否则通常可以简化您的管理。
现在,如果添加了实用程序架构,则用户无法访问数据,但是,如果将表添加到 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