我对SQL中的权限感到有点困惑
我创建了一个医疗数据库。
作为一个脚本,我正在创建一个医生角色,我想说他们可以在表1,2和3上执行更新。
数据库实际上包含5个表。
这是否意味着他们无法更新4和5?
或者我是否必须明确表示对医生角色的表4和5进行拒绝更新?
答案 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