在 Standard 或 Advanced 许可等级下可用。
如果您想让其他数据库用户查看或更改数据库中任何数据的内容,那么您必须授予他们执行相应操作的权限。
您可以使用 ArcGIS for Desktop 中的权限对话框或更改权限地理处理工具或者 Python 脚本中的 ChangePrivileges_management 函数指定用户或组对某一特定数据集拥有哪些权限。
您可以仅授予选择权限,也就是说用户可以读取和选择数据集的内容,但不能进行修改。还可以授予用户更新、插入以及删除权限,这样用户便可修改数据集的内容。
下列规则适用于授予和撤消数据库或地理数据库中数据的权限:
- 仅表所有者可更改该表的权限。
- 仅表所有者可删除该表或更改其定义;因此即使其他用户已被授予了插入、更新以及删除数据集的权限,也无法更改方案
- 如果您要向用户授予插入、更新或删除权限,则您必须也授予选择权限;用户在编辑数据集之前必须能够对其进行读取。
- dbo 和 db_owner 角色不会出现在 SQL Server 数据库的“用户/角色”列表中。这些用户自动拥有所有数据的全部权限,您无法撤消这些权限。
- 在数据库中被授予超级用户权限的 PostgreSQL 登录角色或组不会显示在“用户/角色”列表中。这些用户自动拥有所有数据的全部权限,您无法撤消这些权限。
- 只可使用权限 对话框一次更改一个数据集的用户权限。为了能够同时更改多个数据集的权限,请使用更改权限地理处理工具或 Python 函数。
- 撤销权限需要对数据集应用排它锁;如果其他用户正连接到该数据集,则您无法撤销用户对该数据集的权限。
这些规则仅适用于授予和撤消地理数据库中数据集的权限:
- 要素数据集中的所有要素类必须具有相同的用户权限。
- 从 ArcGIS 10.1 开始,如果已将新要素类添加到要素数据集中或在要素数据集中构建了网络或拓扑,则会自动授予对新的要素类、网络或拓扑的现有用户权限以与针对要素数据集授予的权限相匹配。
- 为参与关系类的要素类或表授予权限后,必须为源类和目标类授予这些权限。如果源要素类和目标要素类在同一要素数据集中,那么由于授予的权限都在要素数据集级别,使得二者具有同一组权限。然而,如果源类或目标类不在同一要素数据集中,则必须确保为源类和目标类授予适当的权限。如果关系类被属性化或具有多对多基数,则在向源类分配权限时,权限将被自动传递至中间表。
- 如果数据集未版本化,则可使用权限对话框分别授予和撤消更新、插入和删除的权限。例如,可以为用户授予选择和更新的权限,从而允许该用户连接到数据集并更改现有要素,但不允许该用户添加新要素或删除现有要素。
- 如果将数据集注册为版本化,则必须以组的形式来对用户授予和撤消修改数据集(更新、插入和删除)的权限。
- 如果将数据集注册为版本化,则地理数据库管理员必须拥有数据集的所有权限。因此,您无法撤消地理数据库管理员对版本化数据集的权限。
使用下列方法之一授予或撤销您所拥有的数据集的权限:
- 权限对话框 - 使用权限对话框时,可查看用户或组已具有的特定数据集的权限。还可以一次向多个用户或组授予数据集权限。
- 更改权限工具 - 使用更改权限工具时,可向用户或组授予多个数据集的权限。
- Python 脚本 - Python 脚本可通过已安装了 ArcGIS for Server 的 Linux 计算机运行。权限可在多个数据集上进行更改。
使用“权限”对话框。
通过目录树中数据库链接的快捷菜单打开权限对话框。此对话框允许您从列表中选出想要向其授予权限的用户和组。如果数据集未注册为版本,则还允许您分别授予数据集的 INSERT、UPDATE 以及 DELETE 权限。
- 启动 ArcMap 或 ArcCatalog,然后双击目录树中的数据库连接文件夹。
- 连接到数据库或地理数据库,这两个数据库包含您所拥有并想要授予或撤销其权限的数据。
- 右键单击数据集,指向管理,然后单击权限。
将打开权限对话框。
- 如果想要更改权限的用户或角色已在列表中,则可以根据您的需要选中或取消选中复选框来授予或撤消权限,然后单击确定应用您的更改。
- 如果用户或角色尚不在列表中,请执行以下操作:
- 单击添加打开用户/角色对话框。
- 如果您具有查看列出数据库中所有用户和角色的系统表的数据库权限,则可以通过选中所需数据库用户或角色名称旁边的复选框从列表进行添加。否则,输入想要授予权限的数据库用户、数据库角色、操作系统登录帐户或 Windows 组的名称。要输入多个用户或组,请输入以逗号分隔的名称(无空格)。
- 单击确定关闭用户/角色对话框。
- 选中希望每个新用户或角色拥有的权限所对应的框,然后单击确定。
使用更改权限工具
您可以使用 ArcGIS for Desktop 中的更改权限工具授予或撤销您所拥有的数据集的权限。该工具位于“数据管理”工具箱的“地理数据库管理”工具集中。
使用此工具您可以同时更改多个数据集的用户或组的权限。请注意,更改权限工具并不会显示用户已具有的数据集权限。同样,INSERT、UPDATE 以及 DELETE 权限必须作为一个组进行授予,不可单独授予。
- 在 ArcGIS for Desktop 中,作为您想要授予或撤销权限的数据集的所有者连接到地理数据库或数据库。
- 打开更改权限工具。
该工具位于“数据管理”工具箱的“地理数据库管理”工具集中。
- 浏览至数据库连接并选择想要更改权限的数据集。
- 输入想要更改其权限的用户或组的名称。
- 使用查看和编辑下拉列表选择想要向某特定用户或组授予的权限:
如果想要授予编辑权限,则必须先授予查看权限。
- 单击确定以运行工具。
使用 Python 脚本
如果想要针对授予或撤销所拥有的数据集权限编辑脚本,则可使用 Python 脚本中的 ChangePrivileges_management 函数。
- 首先,使用 CreateDatabaseConnection_management 函数创建数据库连接。必须作为该数据集的所有者进行连接并且随文件一起保存用户名。
在本例中,将在 /usr/connections 目录下创建连接文件 gdb.sde。此连接是以 eng1 用户身份对编入目录的数据库 projdata 建立的。
import arcpy arcpy.CreateDatabaseConnection_management (r'/usr/connections', "gdb.sde", "DB2", "PROJDATA", "DATABASE_AUTH", "eng1", "T!i569", "SAVE_USERNAME")
- 运行 ChangePrivileges_management 函数。
在本例中,向组读取者授予三个数据集的查看权限。
arcpy.ChangePrivileges_management ("/usr/connections/gdb.sde/projdata.eng1.properties,projdata.eng1.routes,projdata.eng1.demo", "readers", "GRANT", "AS_IS")