角色的SQL权限

时间:2013-12-31 22:52:09

标签: sql sql-server

我对SQL中的权限感到有点困惑

我创建了一个医疗数据库。

作为一个脚本,我正在创建一个医生角色,我想说他们可以在表1,2和3上执行更新。

数据库实际上包含5个表。

这是否意味着他们无法更新4和5?

或者我是否必须明确表示对医生角色的表4和5进行拒绝更新?

3 个答案:

答案 0 :(得分:1)

SQL-Server遵循“最低权限”原则 - 您必须(明确)授予权限。

'这是否意味着他们无法更新4和5?'

如果您的医生角色的用户担任医生角色,那么是。

但是,如果这些用户也处于其他角色(即有权访问4& 5的其他角色),则不会。

更多信息:http://msdn.microsoft.com/en-us/library/bb669084%28v=vs.110%29.aspx

答案 1 :(得分:0)

除非角色是dbo,db_owner或db_datawriter,否则它将无权编辑任何数据。如果要为单个表授予完全编辑权限,请执行以下操作:

GRANT ALL ON table1 TO doctor

该角色的用户对其他表(甚至不读)都没有任何权限。

答案 2 :(得分:0)

USE DataBaseName;
GO
--------- CREATE ROLE ---------
CREATE ROLE Doctors ;
GO

---- Assign Role To users -------

CREATE USER [Username] FOR LOGIN [Domain\Username]
EXEC sp_addrolemember N'Doctors', N'Username'

----- GRANT Permission to Users Assinged with this Role-----
GRANT ALL ON Table1, Table2, Table3 TO Doctors;
GO