授予和撤销数据库和企业级地理数据库中的数据集权限

在 Standard 或 Advanced 许可等级下可用。

要让其他数据库用户查看或更改数据库或企业级地理数据库中任何数据的内容,那么您必须授予他们执行相应操作的权限。

抢先版本:
对于企业级地理数据库和数据库,数据所有者将由在使用 ArcGIS 客户端中的工具创建要素类或表时所使用的数据库连接中指定的用户确定。

数据集所有者可以使用权限对话框、更改权限地理处理工具或者以 Python 脚本创建的 ChangePrivileges_management 函数指定用户或组对某一特定数据集拥有哪些权限。

您可以授予 select 权限,也就是说用户可以读取和选择数据集的内容,但不能进行修改。 还可以授予用户更新、插入以及删除权限,这样用户便可修改数据集的内容。

下列规则适用于授予和撤消 ArcGIS 中的数据库或企业级地理数据库中数据的权限:

  • 仅表所有者可更改数据集上的权限。
  • 仅表所有者可删除数据集或更改其方案定义;因此即使其他用户已被授予了插入、更新以及删除数据集的权限,也无法更改方案。
  • 当向某个用户授予插入、更新或删除权限时,则还必须授予选择权限。 用户必须能够读取数据集才能对其进行编辑。
  • dbo 和 db_owner 角色不会出现在 Microsoft SQL Server 数据库权限对话框的用户/角色列表中。 这些用户自动拥有授予数据库中的所有数据的权限。 权限因角色而异,并且无法撤消这些权限。
  • 已授予数据库超级用户状态的 PostgreSQL 登录角色或组将不会出现在权限对话框的用户/角色列表中。 这些用户自动具有对所有数据的完整权限,并且您无法撤消这些权限。
  • 使用权限对话框一次只能更改一个数据集上的用户权限。 要一次更改多个数据集上的权限,可以改用更改权限地理处理工具或 Python 函数。
  • 撤消权限需要对数据集应用独占锁。 如果其他用户已连接到该数据集,则您无法撤消权限。

以下规则仅适用于授予和撤消企业级地理数据库中数据集的权限:

  • 要素数据集中的所有要素类必须已应用相同的权限。
  • 为参与关系类的要素类或表授予权限后,必须为源类和目标类授予这些权限。 如果源要素类和目标要素类在同一要素数据集中,那么由于授予的权限都在要素数据集级别,使得二者具有同一组权限。 然而,如果源类或目标类不在同一要素数据集中,则必须确保为源类和目标类授予适当的权限。 如果关系类被属性化或具有多对多基数,则在向源类分配权限时,权限将被自动传递至中间表。
  • 如果数据集未注册为版本,则可使用权限对话框分别授予和撤消更新、插入和删除的权限。 例如,您可以授予某个用户选择和更新权限,这使该用户能够连接到数据集并更改现有要素但不允许该用户添加新要素或删除现有要素。
  • 如果已将数据集注册为传统版本,则允许用户修改数据集(更新、插入和删除)的权限必须成组授予和撤消。
  • 如果已将数据集注册为传统版本化,则地理数据库管理员必须具有该数据集的完整权限。 因此,您无法撤消地理数据库管理员对这些数据集的权限。
  • 注册为分支版本的数据集仅可通过 Web 要素图层进行编辑,并且通过 Web 要素图层上的设置来控制对数据的访问。 因为仅数据集所有者才能发布分支版本化数据,因此无法将地理数据库中数据的权限授予其他数据库用户。

使用下列方法之一授予或撤销您所拥有的数据集的权限:

  • 更改权限工具 - 使用更改权限地理处理工具时,可向用户或组授予多个数据集的权限。
  • Python 脚本 - 可通过已安装 ArcGIS Server 的计算机运行 Python 脚本。 权限可在多个数据集上进行更改。

使用更改权限工具

您可以使用更改权限工具授予或撤消您所拥有的数据集权限。 该工具位于“数据管理”工具箱的“地理数据库管理”工具集中。

您可以使用此工具同时更改多个数据集的用户或组的权限。 更改权限工具并不会显示用户可能具有的任何现有数据集权限。 同样,插入、更新和删除权限必须作为一个组进行授予,不可单独授予。

  1. 以您想要授予或撤消权限的数据集所有者身份连接到地理数据库或数据库。
  2. 打开更改权限工具。
  3. 浏览至数据库连接并选择想要更改权限的数据集。
  4. 输入想要更改其权限的用户或组的名称。
  5. 使用查看编辑下拉列表选择想要向某特定用户或组授予的权限。

    要授予编辑权限,也必须授予其查看权限。

  6. 单击确定以运行工具。

使用 Python 脚本

要使用 Python 脚本授权或撤销所拥有的数据集权限,则可使用 ChangePrivileges_management 函数。

  1. 使用 CreateDatabaseConnection_management 函数创建数据库连接。 必须作为该数据集的所有者进行连接并且随文件一起保存用户名。
  2. 运行 ChangePrivileges_management 函数。