文件地理数据库和锁定

如果您是使用文件地理数据库中某数据集的唯一用户并且只通过一个进程访问此数据集,则可以自由编辑或修改其属性。可以删除、压缩或解压缩数据集。

但是,如果另一进程已经在访问此数据,无论此进程是在您的计算机还是在另一计算机或服务上,ArcGIS 都将阻止您执行任何上述操作。另一个进程终止后,可再次执行这些操作。例如,如果您在 ArcMapArcGIS Pro 的地图中显示了一个要素类,同时试图从地理数据库中删除同一要素类,则会显示以下消息:

Failed to delete selected object(s)
Cannot acquire a schema lock because of an existing lock.

如果随后关闭地图并重试,即可删除此要素类,只要没有任何其他进程正在访问此数据。

当进程访问某数据集时,它会锁定此数据集,以阻止其他进程对其进行修改。访问某个数据集时还会锁定其他相关数据集,具体说明如下:

  • 访问某个要素数据集中某一要素类的进程会锁定此要素数据集中的所有要素类。
  • 锁会应用于关系类的双方。也就是说,如果两个独立的要素类通过某个关系类建立了关联,并且某个进程正在访问其中一个要素类,则这两个要素类都会被锁定。

为跟踪锁定的数据集,ArcGIS 会在文件地理数据库文件夹中放置 lock 文件。当进程终止时,与其关联的 lock 文件会自动删除。但是在某些情况下,例如当进程过早结束时,lock 文件可能会留在地理数据库文件夹中。当新锁定发生时,ArcGIS 最终会在之后的会话中移除这些 lock 文件。每当运行数据库碎片整理地理处理工具或在 ArcGIS 中复制和粘贴数据时,也会移除这些文件。同时,这些 lock 文件将不再继续锁定数据。

锁定对于文件和进程管理至关重要。但是,有时锁定也会成为羁绊。如果您受到阻止,无法对某个数据集及其属性进行编辑、删除、压缩或解压缩,那么是因为发生了以下情况之一:

  • 正在同时使用两个或多个应用程序或服务访问数据。关闭其中一个应用程序或停止服务,以便可以执行所需的操作。
  • 计算机上的另一进程仍在访问此数据,因为该进程没有正常终止。例如,尽管应用程序似乎未在运行,但该应用程序可能未正常关闭,因此仍在锁定此数据。可打开“任务管理器”查看是否存在此类孤立进程并将其结束。