架构锁定

注意注意:

多数情况下,ArcGIS 会对地理数据库中的数据集自动应用和释放共享锁与排他锁,以帮助管理变更且不会与其他用户发生冲突。该规则的一个例外是在 ArcCatalog 中取消选择地理数据库时,必须手动刷新包含地理数据库的文件夹以释放地理数据库上的锁。本部分介绍这些架构锁的工作原理。

在 ArcSDE 地理数据库中,多个用户可以同时读取和编辑相同数据。为了能在应用程序(例如 ArcMap)中使用地理数据库中的数据,应用程序必须按照特定原则工作,即地理数据库架构在使用地理数据库内容的任何时候均保持固定,不发生更改。例如,将要素类从地理数据库添加到地图时,您和其他用户都不能更改其架构。从地图中删除该要素类并且没有其他用户查询或编辑该要素类后,可以更改其架构。

架构锁定概述

地理数据库及其数据集很少是静态的。多数数据集会随时间编辑和更新。有时,会因为多种原因添加新数据集和删除现有数据集。此外,还会对现有数据集进行架构更改 - 添加属性列、更改拓扑中的规则、添加制图表达等等。

如果使用单用户地理数据库,则很容易进行这些更改,而且无需考虑操作可能对其他用户的影响。但是,如果其他用户正在访问和使用要对其进行更改的同一个地理数据库,则需要建立一些工作流以进行架构更改。例如,要在不影响其他用户的情况下进行更改,可安排在其他用户离开系统时执行架构工作。

ArcGIS 提供一些自动架构锁定机制来帮助管理地理数据库更改。计划工作时考虑这些机制非常有用。

共享锁

ArcGIS 将自动获取使用中的单个数据集上的共享锁,例如,当用户编辑或查询要素类或表的内容时。使用该机制可以使其他用户无法对使用中的基础数据集及其架构进行更改。

可以在任何时间对单个要素类或表建立任何数量的共享锁。当使用 ArcGIS 修改地理数据库架构(例如,添加字段或更改规则)时,ArcGIS 会尝试在被更改的数据上建立排他锁。但是,如果该数据集上有共享锁,则无法建立排他锁。

排他锁

排他锁用于锁定地理数据库中的数据集以防止其他用户使用,以便对数据集进行必要的更改,例如,更改数据集的架构。当具有适当权限的用户开始更改地理数据库中的数据集时,ArcGIS 会自动在单个属性表、要素类表、栅格表或其他数据集上建立排他锁。

如果用户想更改地理数据库架构,则该用户使用的特定数据集不能被其他用户使用。换句话说,要对数据集进行更改,该数据集上就不能存在共享锁。

在个人地理数据库中使用锁

在个人地理数据库中,所有锁会应用于整个地理数据库中的全部内容。在个人地理数据库中的某个项目上获取了排他锁或共享锁后,该锁将应用于整个地理数据库。这意味着同一时间只有一个编辑人员可以编辑个人地理数据库。

任何对保存个人地理数据库的 Microsoft Access 数据库 (.mdb) 文件具有适当读/写访问权限的用户都可以编辑和更改其架构内容。

当访问保存在网络驱动器的个人地理数据库或通过 UNC 路径访问时,确保所有用户对包含个人地理数据库的文件夹至少具有写访问权限。如果所有用户都不具有写访问权限,则只有一个用户能打开个人地理数据库。打开个人地理数据库的后续尝试会导致架构锁定错误,因为 Microsoft Jet 数据库引擎无法打开和修改 .ldb 文件来控制对 .mdb 文件的访问。

在文件地理数据库中使用锁

用户必须具有文件地理数据库文件夹的读/写访问权限,才能更改其架构。

架构锁(共享和排他)应用于文件地理数据库中的各个数据集和相关表。例如:

在 ArcSDE 地理数据库中使用锁

用户必须对 ArcSDE 地理数据库具有适当的用户权限才能更改其架构。有关如何建立和管理 ArcSDE 中的权限的信息,请参阅用户权限

架构锁(共享和排他)应用于 ArcSDE 地理数据库中的各个数据集和相关表。例如:


3/7/2012