deny和revoke的区别是什么?

解决方案 »

  1.   

    --参考books online
    deny拒绝授予主体权限。防止主体通过其组或角色成员身份继承权限
    revoke取消以前授予或拒绝了的权限
      

  2.   

    如果使用 DENY 语句禁止用户获得某个权限,那么以后将该用户添加到已得到该权限的组或角色时,该用户不能访问这个权限。如果用户激活一个应用程序角色,DENY 对用户使用该应用程序角色访问的任何对象没有任何作用。虽然用户可能被拒绝访问当前数据库内的特定对象,但如果应用程序角色能够访问该对象,则当应用程序角色激活时,用户仍可以访问该对象。使用 REVOKE 语句可从用户帐户中删除拒绝的权限。安全帐户不能访问删除的权限,除非将该权限授予了用户所在的组或角色。使用 GRANT 语句可删除拒绝的权限并将权限显式应用于安全帐户。
      

  3.   

    DENY是不许给你
    如果你本来就有,那么就用REVOKE抢走
      

  4.   

    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权限