当用户查看和编辑数据时,ArcGIS AllSource 会对企业级地理数据库中的数据集应用和释放锁。 需要这些锁才能保持数据和版本一致。 当地理数据库中的对象被锁定时,对这些对象更改的访问将基于所加的是共享锁还是排它锁。
使用企业级地理数据库数据集时,将由所用的版本化类型确定锁定行为。 需要清楚地了解锁定工作原理,因为这将影响用户体验。 例如,使用指定版本中的传统版本化数据集时,多个用户可同时进行编辑。 这是因为获得的是共享版本锁。 使用指定版本中的分支版本化数据集时,一次仅允许一个编辑者。 如果在编辑指定分支版本时获得独占版本锁,将强制实施此行为。
可使用地理数据库管理对话框查看企业级地理数据库中的锁。 这将列出具有属性的锁,以帮助确定哪位用户可能阻止您完成对特定数据集或版本的操作 这会帮助您与其他用户协调编辑进程并对数据集进行方案变更。 地理数据库管理员可以查看并管理地理数据库中的所有数据和版本锁。 这将允许管理员查看哪些连接可能阻止完成维护任务,例如协调数据、压缩地理数据库或升级。
锁模式
将根据要执行的操作和数据集的注册类型使用共享锁模式或独占锁模式。
共享
将在使用中的单个数据集上获取共享锁,例如用户编辑或查询要素类或表的内容时。 将使用此机制,以防其他用户对使用中的基础数据集及其方案进行更改。 可以在给定时间对单个要素类或表建立任何数量的共享锁。
异
独占锁用于锁定地理数据库中的数据集以防其他用户使用,以便对数据集进行必要的更改,例如,协调版本。 当具有适当权限的用户开始更改地理数据库中的数据集时,系统会自动在单个属性表、要素类表、栅格表或其他数据集上建立独占锁。 但是,如果该数据集上有共享锁,则无法建立排它锁。
独占锁升级自共享锁,当不再需要时降级回共享锁。 一个数据集或版本上同一时间只允许有一个排它锁。
锁类型
使用企业级地理数据库时,可使用不同的锁类型。 将根据数据集的注册类型和操作确定要使用的锁类型。
方案锁
ArcGIS 应用程序和 Web 图层的工作原理是,在处理地理数据库中的数据时,地理数据库模式保持固定且不会更改。 例如,地图图像图层的使用者期望地图图像图层中的数据模式不会改变。
为了实现这种一致性,任何时候访问数据集(例如将其添加到 ArcGIS AllSource 中的地图时或 Web 图层使用数据集时)都会在数据集上获取共享模式锁。 当以任何方式修改数据集方案时,该共享方案锁将在方案更改期间从共享锁升级为独占锁。 这可以防止其他用户打开数据集时更改数据集的方案,从而在多用户环境下提供一致性。
如果其他用户正在访问您需要在其中进行模式更改的同一地理数据库数据集,则必须建立工作流以便在数据集未使用时进行模式更改。 例如,要在不影响其他用户的情况下进行更改,请安排在所有其他用户都离开系统时执行模式工作。 如果数据集已发布到服务,请停止服务并更改模式。 有关详细信息,请参阅 ArcGIS Server 帮助中的在地图服务中更改模式。
状态锁
访问传统版本化数据集时,将获取共享状态锁。 特定的 state_id 将以锁的对象名称的形式列出。 此锁类型仅适用于传统版本化数据集。
版本锁
访问企业级地理数据库的版本化数据集时,将获取版本锁类型。 根据要执行的操作和数据集的版本化类型,锁模式会有所不同。
- 分支版本化 - 通过将分支版本化数据集添加到地图对其进行查看时,将获取共享版本锁。 进行编辑时,版本锁的锁模式取决于要编辑的版本:
- 默认 - 编辑默认版本时,将保留共享版本锁。
- 指定版本 - 编辑指定版本时,共享版本锁将升级为独占锁。
- 传统版本化 - 当传统版本化数据集处于活动编辑状态时,将获取共享版本锁。 执行协调操作期间,共享版本锁将升级为独占版本锁。
OID 保留锁
编辑分支版本化数据集时,将获取 OID 保留锁。 将保留对象 ID,以限制数据集在编辑操作期间获取对象 ID 的行程数。 此锁类型仅适用于分支版本化数据集。