一、操作场景
不同账号类型支持的设置库/表权限操作如下。
| 账号类型 | 设置库权限操作 | 设置表权限操作 |
| 普通账号 | 支持 | 支持 |
| 高级权限账号 | 不支持。高级权限账号默认对所有数据库有所有者权限,无需单独设置库权限。 | 支持 |
| 超级权限账号 | 不支持。超级权限账号具备最高管理 sysadmin 权限,默认对所有数据库有所有者权限,无需单独设置库权限。 | 不支持 |
| 特殊权限账号 | 支持 | 不支持 |
二、前提条件
已 创建账号。
三、权限说明
| 授予级别 | 权限 | 说明 |
| 库权限 | 所有者 | server 级别角色:processadmindbcreatordatabase 级别角色:db_owner |
| | 读写 | server 级别角色:processadmindbcreatordatabase 级别角色:db_readerdb_writer |
| | 只读 | server 级别角色:processadmindbcreatordatabase 级别角色:db_reader |
| 表权限 | INSERT | 插入数据 |
| | UPDATE | 更新数据 |
| | VIEW DEFINITION | 查看定义 |
| | VIEW CHANGE TRACKING | 查看更改跟踪记录 |
| | UNMASK | 撤销掩码 |
| | ALTER | 修改表结构和属性 |
| | TAKE OWNERSHIP | 接管所有权 |
| | CONTROL | 表的完全控制权限 |
| | DELETE | 删除数据 |
| | SELECT | 查询数据 |
| | REFERENCES | 引用权限,表在创建外键的时候要被引用 |
四、设置库权限
为账号设置库权限,表示对该账号授予数据库级别的权限。
在 创建账号 时,若已经设置该账号对数据库所具有的权限,你可通过以下步骤修改、取消授予数据库的权限;若未设置该账号对数据库所具有的权限,可以在创建账号后,通过以下步骤对该账号进行数据库级别的授权,授权后的修改权限以及取消授权操作也可以参考以下步骤。
1. 登录 SQL Server 控制台,在实例列表,单击实例 ID 或操作列的管理,进入实例管理页面。
2. 在实例管理页面,选择账号管理 > 账号列表,选择所需账号,在操作列单击设置库权限。
注意:说明:
注意:在账号列表勾选多个账号,单击上方的批量管理 > 批量重置库权限,可批量修改库权限。
3. 在弹出的对话框,根据需要进行权限设置,然后单击确定。
下面为在对话框中,可进行的操作设置:
·选择授权数据库:左侧的数据库列表会显示未选择的数据库,可以勾选需要授权的1个或多个数据库,也可以勾选未授权数据库以实现一键全选,支持单击对数据库名称按首字母顺序进行排序(正序或逆序)。选择完需要授权的数据库后,在右侧的数据库列表下,可以分别进行权限设置,权限包括读写、只读、所有者。
·取消授权数据库:右侧的数据库列表会显示已授权的数据库,如需取消授权,可以在目标数据库后单击叉号实现。
·修改已授权数据库的权限:在右侧的数据库列表下,可以修改已授权数据库的权限,例如:从读写变更为只读,从只读变更为所有者等。
五、设置表权限
为账号设置表权限,表示对该账号授予表级别的权限。
1. 登录 SQL Server 控制台,在实例列表,单击实例 ID 或操作列的管理,进入实例管理页面。
2. 在实例管理页面,选择账号管理 > 账号列表,选择所需账号,在操作列单击更多 > 设置表权限。
3. 在弹出的对话框中,选择需要设置表权限的表,然后设置权限,单击下一步。
注意:说明:
注意:在 SQL Server 内核中,DENY 的优先级高于 GRANT。如果对某个对象执行了 DENY CONTROL,就相当于彻底封死了该对象的所有访问权限,哪怕之后再单独 GRANT 其他权限,也依然不会生效,执行时只会报“权限不足”。
注意:因此,尽量不要在表级权限中拒绝 CONTROL:一旦勾选拒绝,即便后续单独授予 SELECT、UPDATE 等其他权限,也都会被 DENY 覆盖,不会生效。
下面为在对话框中,可进行的操作设置:
·筛选:在某一个数据库下,支持输入表名进行快捷筛选。
·批量授权:单击批量授权,可批量选择表,然后对这些表统一进行权限设置。
·清空并退出批量授权:选择批量授权后,在未确定本次权限设置之前,可通过此操作一键清空所选择的表和设置的权限,重新回到设置权限的初始页面。
·重置:单击重置,可重置对表的权限设置,重置后可根据需要重新进行权限设置。
·权限设置:对表可进行的操作有多个,例如:INSERT、DELETE 等,你可对每一项操作进行权限设置(授予、授予并允许转授、拒绝)。
·修改或取消权限:若需对已设置过权限的表进行修改或取消权限,你可找到目标表,然后在权限设置时重新选择对该表的权限或取消勾选其权限设置。
4. 设置完权限后,进入 SQL 预览,可预览当前账号本次授予的所有表权限,如需修改可单击上一步进行修改,如需取消本次授权,可单击取消。
5. 确认无误后,单击确定,完成本次设置。
六、相关 API
| API | 描述 |
| 修改实例账号权限 | 接口(ModifyAccountPrivilege)用于修改实例账号权限。 |