如何为数据库中的所有表/过程授予select / update / insert / execute权限?创造角色?
因为我想拥有访客(对某些表的所有选择权限),用户(仅选择,更新,插入表的权限)和管理员(对数据库中所有对象的所有权限)
答案 0 :(得分:3)
方法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
答案 1 :(得分: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