文件地理数据库和锁定
如果您是使用文件地理数据库中某数据集的唯一用户并且只通过一个进程访问此数据集,则可以自由编辑或修改其属性。可以删除、压缩或解压缩数据集。
然而,如果另一进程已经在访问此数据,无论此进程是在您的计算机还是在另一用户的计算机上,ArcGIS 都将阻止您执行任何上述操作,直到另一进程终止为止。例如,如果您在 ArcMap 中显示了一个要素类,同时试图从 Catalog 目录树中将其删除,则会显示以下消息:
删除所选对象失败。无法获取架构锁,因为已存在现有锁。
如果随后关闭 ArcMap 并重试,即可删除此要素类,只要没有任何其他进程正在访问此数据。
当进程访问某数据集时,它会锁定此数据集,以阻止其他进程对其进行修改。访问某个数据集时还会锁定其他相关数据集,具体说明如下:
- 访问某个要素数据集中某一要素类的进程会锁定此要素数据集中的所有要素类。
- 锁定会应用于关系类的双方。也就是说,如果两个独立的要素类通过某个关系类建立了关联,并且某个进程正在访问其中一个要素类,则这两个要素类都会被锁定。
为跟踪锁定的数据集,ArcGIS 会在文件地理数据库文件夹中放置 *.lock 文件。当进程终止时,与其关联的 .lock 文件会自动删除。但是在某些情况下,例如当进程过早结束时,.lock 文件可能会留在地理数据库文件夹中。当新锁定发生时,ArcGIS 最终会在之后的会话中移除这些 .lock 文件。每当运行“紧缩”地理处理工具或在 Catalog 目录树中复制和粘贴数据时,也会移除这些文件。同时,这些 .lock 文件将不再继续锁定数据。
锁定对于文件和进程管理至关重要。但是,有时锁定也会成为羁绊。如果您受到阻止,无法对某个数据集及其属性进行编辑、删除、压缩或解压缩,那么是因为发生了以下情况之一:
- 您正使用两个或更多进程同时访问此数据,例如 ArcMap 和 ArcCatalog,或者 ArcCatalog 和 Python。关闭其中一个应用程序,以便可以执行所需的操作。
- 计算机上的另一进程仍在访问此数据,因为该进程没有正常终止。例如,尽管 ArcCatalog 似乎未在运行,但该应用程序可能未正常关闭,因此仍在锁定此数据。可打开“任务管理器”查看是否存在此类孤立进程并将其结束。
- 数据正被另一台计算机上的一个或多个进程访问。等待这些进程终止或让用户终止所有访问此数据的进程。
如果不知道其他哪些计算机正在访问此数据,可使用 Windows 资源管理器小心地删除文件地理数据库文件夹中的 *.lock 文件。执行此操作时务必谨慎,误删 .lock 文件以外的文件会导致数据损坏。删除 .lock 文件后,请查看您无法删除的 .lock 文件的名称。剩余的 .lock 文件的名称包含了仍在访问此数据的计算机的名称。例如,名为 xxx.PLUTO.15332.sr.lock 的 .lock 文件表示计算机 PLUTO 正在访问此数据。如果实在没有办法,可以通过重新启动包含文件地理数据库的计算机来清除所有活动的锁定。但是,执行此操作之前,请确保没有人正在访问此数据,否则他们的工作将得不到保存。
与使用其他类型的文件一样,最好定期备份文件地理数据库,以防出现任何问题。