如果使用 DENY 语句禁止用户获得某个权限,那么以后将该用户添加到已得到该权限的组或角色时,该用户不能访问这个权限。如果用户激活一个应用程序角色,DENY 对用户使用该应用程序角色访问的任何对象没有任何作用。虽然用户可能被拒绝访问当前数据库内的特定对象,但如果应用程序角色能够访问该对象,则当应用程序角色激活时,用户仍可以访问该对象。使用 REVOKE 语句可从用户帐户中删除拒绝的权限。安全帐户不能访问删除的权限,除非将该权限授予了用户所在的组或角色。使用 GRANT 语句可删除拒绝的权限并将权限显式应用于安全帐户。
DENY是不许给你 如果你本来就有,那么就用REVOKE抢走
GRANT INSERT ON TableA TO RoleA GO EXEC sp_addrolemember RoleA, 'UserA' -- 用户UserA将有TableA的INSERT权限 GOREVOKE INSERT ON TableA FROM RoleA -- 用户UserA将没有TableA的INSERT权限 GOGRANT INSERT ON TableA TO RoleA GO DENY INSERT ON TableA TO UserA -- 虽然用户UserA所在RoleA有TableA的INSERT权限,但UserA本身被DENY了,所以用户UserA将没有TableA的INSERT权限
deny拒绝授予主体权限。防止主体通过其组或角色成员身份继承权限
revoke取消以前授予或拒绝了的权限
如果你本来就有,那么就用REVOKE抢走
GO
EXEC sp_addrolemember RoleA, 'UserA' -- 用户UserA将有TableA的INSERT权限
GOREVOKE INSERT ON TableA FROM RoleA -- 用户UserA将没有TableA的INSERT权限
GOGRANT INSERT ON TableA TO RoleA
GO
DENY INSERT ON TableA TO UserA -- 虽然用户UserA所在RoleA有TableA的INSERT权限,但UserA本身被DENY了,所以用户UserA将没有TableA的INSERT权限