1

如何授予数据库中所有表/过程的选择/更新/插入/执行权限?创建角色?

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

4

2 回答 2

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

于 2012-10-06T17:49:56.880 回答
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
于 2012-10-06T17:50:12.010 回答