向数据库的所有操作授予权限

时间:2012-10-06 15:36:31

标签: sql-server

如何为数据库中的所有表/过程授予select / update / insert / execute权限?创造角色?

因为我想拥有访客(对某些表的所有选择权限),用户(仅选择,更新,插入表的权限)和管理员(对数据库中所有对象的所有权限)

2 个答案:

答案 0 :(得分:3)

方法1)当有大的没有时有用。用户。
GRANT SELECT, INSERT, DELETE, UPDATE on SCHEMA::SchemaName to Principal - 用于架构的DBO

对于Principal来说,使用角色而不是单个用户是可取的,除非您只有少数用户,否则通常会简化您的管理。

现在,如果添加了实用程序架构,则用户无权访问数据,但是,如果将表添加到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

答案 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