在工作组或企业级地理数据库中,多个用户可以同时读取和编辑相同数据。为了能在应用程序(例如 ArcMap)中使用地理数据库中的数据,应用程序必须按照特定原则工作,即地理数据库方案在使用地理数据库内容的任何时候均保持固定,不发生更改。例如,将要素类从地理数据库添加到地图时,您和其他用户都不能更改其方案。从地图中删除该要素类或关闭地图文档后,如果没有其他用户正在查询或编辑该要素类,则可以更改其方案。
方案锁定概述
地理数据库及其数据集很少是静态的。多数数据集会随时间编辑和更新。有时,会因为多种原因添加新数据集和删除现有数据集。此外,还会对现有数据集进行方案变更 - 添加属性列、更改拓扑中的规则、添加制图表达等等。
如果使用单用户地理数据库,则很容易进行这些更改,而且无需考虑操作可能对其他用户的影响。但是,如果其他用户正在访问和使用要对其进行更改的同一个地理数据库,则需要建立一些工作流以进行方案变更。例如,要在不影响其他用户的情况下进行更改,可安排在其他用户离开系统时执行方案工作。
ArcGIS 提供一些自动方案锁定机制来帮助管理地理数据库更改。计划工作时考虑这些机制非常有用。
共享方案锁
ArcGIS 会自动获取使用中的单个数据集上的共享锁,例如,当用户编辑或查询要素类或表的内容时。使用该机制可以使其他用户无法对使用中的基础数据集及其方案进行更改。
可以在任何时间对单个要素类或表建立任何数量的共享锁。当使用 ArcGIS 修改地理数据库方案(例如,添加字段或更改规则)时,ArcGIS 会尝试在被更改的数据上建立排它锁。但是,如果该数据集上有共享锁,则无法建立排它锁。
排它方案锁
排它锁用于锁定地理数据库中的数据集以防止其他用户使用,以便对数据集进行必要的更改,例如,更改数据集的方案。当具有适当权限的用户开始更改地理数据库中的数据集时,ArcGIS 会自动在单个属性表、要素类表、栅格表或其他数据集上建立排它锁。
如果用户想更改地理数据库方案,则该用户使用的特定数据集不能被其他用户使用。换句话说,要对数据集进行更改,该数据集上就不能存在共享锁。
个人地理数据库锁定
在个人地理数据库中,所有锁会应用于整个地理数据库中的全部内容。在个人地理数据库中的某个项目上获取了排它锁或共享锁后,该锁将应用于整个地理数据库。这意味着在同一时间只有一个编辑人员可以编辑个人地理数据库。
任何对保存个人地理数据库的 Microsoft Access 数据库 (.mdb) 文件具有适当读/写访问权限的用户都可以编辑和更改其方案内容。
当访问保存在网络驱动器的个人地理数据库或通过 UNC 路径访问时,确保所有用户对包含个人地理数据库的文件夹至少具有写访问权限。如果所有用户都不具有写访问权限,则只有一个用户能打开个人地理数据库。打开个人地理数据库的后续尝试会导致方案锁定错误,因为 Microsoft Jet 数据库引擎无法打开和修改 .ldb 文件来控制对 .mdb 文件的访问。
文件地理数据库锁定
用户必须具有文件地理数据库文件夹的读/写访问权限,才能更改其方案。
方案锁(共享锁和排它锁)应用于文件地理数据库中的各个数据集和相关表。例如:
- 如果获取要素数据集内某个要素类的锁,则该锁会应用于整个要素数据集及其内容。
- 锁定还会应用于关系类的双方。例如,如果两个独立的要素类通过某个关系类相关联,并且您获得了其中一个要素类的排它锁或共享锁,则该锁也应用于另一个要素类。
工作组或企业级地理数据库中的锁
用户必须拥有数据集才能更改其方案,并且必须被授予相应的权限才能编辑其他用户的数据。
方案锁(共享锁和排它锁)应用于各个数据集和相关表。例如:
- 如果获取要素数据集内某个要素类的锁,则该锁会应用于整个要素数据集及其内容。
- 锁定还会应用于关系类的双方。例如,如果两个独立的要素类通过某个关系类相关联,并且您获得了其中一个要素类的排它锁或共享锁,则该锁也应用于另一个要素类。