(一)在使用ArcMap或Python中,有时会遇到Error 000464的报错。
报错详情:
Error 000464 : 无法获取独占方案锁。正被编辑或正在被其他应用程序使用。
ExecuteError: ERROR 000464: Cannot get exclusive schema lock.
描述
多个用户可以同时读取和编辑相同数据。为了能够使用数据,应用程序必须能够假定该方案已固定并且在使用其内容的任何时候都不会发生更改。
解决方案
请检查您是否正在独占使用和编辑数据集,关闭ArcMap,打开任务管理器将有关ArcGIS的程序关闭。
(二)知其所以然
在工作组或企业级地理数据库中,多个用户可以同时读取和编辑相同数据。为了能在应用程序(例如 ArcMap)中使用地理数据库中的数据,应用程序必须按照特定原则工作,即地理数据库方案在使用地理数据库内容的任何时候均保持固定,不发生更改。例如,将要素类从地理数据库添加到地图时,您和其他用户都不能更改其方案。从地图中删除该要素类或关闭地图文档后,如果没有其他用户正在查询或编辑该要素类,则可以更改其方案。
方案锁定概述
地理数据库及其数据集很少是静态的。多数数据集会随时间编辑和更新。有时,会因为多种原因添加新数据集和删除现有数据集。此外,还会对现有数据集进行方案变更 - 添加属性列、更改拓扑中的规则、添加制图表达等等。
如果使用单用户地理数据库,则很容易进行这些更改,而且无需考虑操作可能对其他用户的影响。但是,如果其他用户正在访问和使用要对其进行更改的同一个地理数据库,则需要建立一些工作流以进行方案变更。例如,要在不影响其他用户的情况下进行更改,可安排在其他用户离开系统时执行方案工作。
ArcGIS 提供一些自动方案锁定机制来帮助管理地理数据库更改。计划工作时考虑这些机制非常有用。
共享方案锁
ArcGIS 会自动获取使用中的单个数据集上的共享锁,例如,当用户编辑或查询要素类或表的内容时。使用该机制可以使其他用户无法对使用中的基础数据集及其方案进行更改。
可以在任何时间对单个要素类或表建立任何数量的共享锁。当使用 ArcGIS 修改地理数据库方案(例如,添加字段或更改规则)时,ArcGIS 会尝试在被更改的数据上建立排它锁。但是,如果该数据集上有共享锁,则无法建立排它锁。
排它方案锁
排它锁用于锁定地理数据库中的数据集以防止其他用户使用,以便对数据集进行必要的更改,例如,更改数据集的方案。当具有适当权限的用户开始更改地理数据库中的数据集时,ArcGIS 会自动在单个属性表、要素类表、栅格表或其他数据集上建立排它锁。
如果用户想更改地理数据库方案,则该用户使用的特定数据集不能被其他用户使用。换句话说,要对数据集进行更改,该数据集上就不能存在共享锁。
使用方案锁的规则
方案是数据库或数据库对象(例如要素类或表)的结构或设计。方案锁指的是其他应用程序正访问数据库,不允许通过添加或移除字段更改其结构。导致方案锁的最常见的原因是在 ArcMap 中显示数据集。
有四条规则总结了使用可能同时被其他应用程序访问的数据时地理处理工具和脚本的行为。
· 即使输出工作空间具有方案锁,工具仍能在输出工作空间创建新数据。这种情况的示例是当 ArcMap 正访问要素数据集时,在 ArcCatalog 中使用创建要素类工具在要素数据集中创建要素类。
· 对数据集方案进行更新的工具总是会受到正在访问该数据集的其他 ArcGIS 应用程序所设置的锁的限制。例如,如果在某个 ArcMap 会话中正显示道路要素类,当其他 ArcMap 会话使用同一道路要素类作为输入时,从此会话执行添加字段工具将失败。此工具失败时会发出错误消息,指出其他用户正在访问数据。
· 脚本总是更新工具在同一脚本内创建的数据的方案,即使当前工作空间正由另一应用程序所使用。例如,脚本工具可在调用应用程序(例如 ArcMap)正在访问个人地理数据库时在该数据库中创建要素类。通常,打开个人地理数据库后,不允许另一进程对数据集的方案进行更改,但是脚本工具可以更改之前创建的要素类的方案。
· 脚本和脚本工具无法修改正由另一应用程序或脚本所访问的数据的方案。这包括从应用程序(例如 ArcMap)传递到脚本工具的数据,因此脚本工具无法对作为参数传递的图层执行添加或删除字段操作。