Vai*_*ain 5 sql sql-server-2005
我希望根据他们的部门为不同的用户提供不同级别的表访问权限.我应该为此目的使用Schema或Roles吗?
角色将是去这里的方式.任何时候你都可以使用角色(例如,在你的情况下是depts.),它们需要表的特定用户权限,而不管它们是什么模式.这可以防止错误,并使数据库管理员的工作更容易.
将角色视为用户的分组以及该组用户的相关权限,而模式则用于数据集的逻辑分组.
根据用户评论进行编辑:
您可以,但是使用模式限制对特定表的访问可能不是考虑它的最佳方式.模式用于分组数据.因此,您可能拥有一个"销售"架构,其中包含销售团队所需的表格,程序等.然后GRANT SELECT ON SCHEMA::sales TO salesRole;,您可以说出使用模式的位置作为向每个销售人员授予salesRole角色的一组用户授予权限的快捷方式.以后在销售模式中创建的任何表都可由具有该角色的用户选择.如果销售团队仅使用此角色且没有其他权限,则这些用户将无法使用在另一个模式中创建的表.如果你的意思是"使用模式限制访问",那么是的,但我更愿意将其视为用户没有通过角色或显式授权授予权限.希望这有助于澄清.