处理方案变更
本主题仅适用于 ArcGIS for Desktop Standard 和 ArcGIS for Desktop Advanced。
创建复本时,会将数据和方案从父地理数据库复制到子地理数据库。数据包括要从数据集复制到复本的行。方案包含用于描述复制数据的字段、属性域、子类型和其他属性。
最初,所有复本上的方案都是相同的,但是随着时间的推移,各个复本方案可能会发生更改。例如,某个复本可能需要附加字段以完成项目,而关系复本可能需要将新属性域应用于现有字段。出现这种情况时,复本的方案将不再相同。
处理复本的方案差异时,可采取以下方式:
保持方案差异 - 可以选择允许对各个复本进行彼此独立的方案变更。地理数据库复制允许复本之间存在大多数方案差异,从而使数据同步过程在大部分情况下能够继续工作。
将方案变更应用于一个复本而不应用于另一个时,您应预先考虑以下问题:
- 不同步的编辑内容 - 数据同步只会导入两个复本所共有的表和字段的更改。如果对关系复本中不存在的字段进行编辑,则导入更改时不会应用所做的编辑内容。另一种典型情况是在一个复本中删除几何网络,但另一个复本中不删除。这种情况下,将移除孤立交汇点类,因此不会应用关系孤立交汇点类中的更改。
- 无效的值 - 违反属性域、子类型、连通性规则以及关系规则的更改会在同步更改时应用。可使用编辑器中的验证工具检查新导入的值。
- 数据同步错误 - 手动更改两个复本的方案时可能发生。例如,您可能希望将字段添加到表。执行此操作时,请确保在所有情况下都做出完全相同的方案变更。如果存在差异(例如,一个字段在某个复本中是字符串,但是在另一个复本中是整型),将出现数据同步错误。
- 不支持的更改 - 某些方案变更类型可能会导致同步失败,但进行此类更改时不会显示警告。地理数据库复制系统不会检测到这些更改。它们包括数据库级别的操作(如更改对数据库中的表所拥有的权限)。如果将复制数据的权限更改为只读,则从关系复本导入更改的尝试将失败。
在复本间应用方案变更 - 修改复本方案使其与关系复本的方案相匹配是一个完全独立于数据同步的过程。可以通过三种工具来实现此目的:比较复本方案、导入复本方案和导出复本方案。这些工具位于 ArcMap 的“分布式地理数据库”工具条以及目录树的“分布式地理数据库”右拉式菜单中,并且可以用作地理处理工具。
工具的使用分为两步:第一步是运行“比较复本方案”工具以生成一个包含方案变更的 XML 文件,第二步是使用“导入复本方案”工具导入这些更改。如果在离线环境中工作,首先需要运行“导出复本方案”工具将包含更改内容的方案导出到 XML 文件中。然后,可将该文件传输到介质(如 CD 或 DVD)上,以便输入到“比较复本方案”工具中。
以下是一个方案变更列表,其中指明了是否可以应用某一更改:
添加 |
更改 |
删除 | |
字段 |
Y |
Y(属性域) |
Y |
属性域 |
Y |
Y |
Y |
表/要素类 |
Y |
Y(属性域,添加/删除字段) |
Y |
几何网络 |
N |
N |
Y |
拓扑 |
N |
N |
Y |
要素数据集 |
N |
N |
Y |
关系类 |
N |
Y(添加/删除字段,属性域) |
Y |
无法使用上述工具将要素类或表添加到复本。要实现此操作,需要运行 ArcObjects 代码。查看代码示例
从复本移除数据 - 每个复本中的数据集列表存储在复本地理数据库中。如果删除其中的一个数据集,则会显示一条警告消息。如果选择继续执行删除操作,该数据集将从复本数据集列表中移除。可使用 ArcObjects API 重新将数据添加到复本。还要注意以下几点:
- 如果删除某个表或要素类之后需要重新将其添加到复本,则必须运行代码以实现此操作。仅执行重新创建操作不起作用。
- 如果删除几何网络或拓扑,则不能重新将它们添加到复本。复本仍然可以实现同步;但是,不支持同步拓扑异常,也不能同步对孤立交汇点类所做的更改。
- 删除要素数据集并将要素类重新添加到复本不起任何作用。
- 删除关系类之后无法将其重新添加到复本。
标识方案差异 - 如果想密切监视方案变更,可使用此工具对复本方案加以比较,从而标识差异。“导入复本方案”向导中会列出方案差异。
最佳做法
一般来说,最好不要更改方案。更改方案可能会导致复本不一致,而应用方案变更的额外任务可能会增加性能开销。然而,在某些情况下必须应用方案变更。
下面概述了处理方案变更时的最佳做法:
- 锁定系统 - 确保使用系统的人员以相应的权限进行工作。在某些情况下,可能需要编写一些用于阻止某些特定类型的未计划方案变更(如添加或删除列)的应用程序。
- 应用定期方案比较 - 由于复制是一种容错操作,因此方案变更很可能不会中断执行同步的系统。一种好的做法是定期运行方案比较以确保不会应用未计划的方案变更。
- 完成维护任务后进行同步 - 有时为了完成维护任务而应用临时方案变更是很有必要的。例如,一些组织需要移除几何网络并将其取消版本化,然后重新构建和重新版本化。几何网络重新版本化之前,数据同步将失败。
- 应用系统范围的方案变更 - 如果需要应用方案变更,则最好在系统范围上以一种有组织的方式来应用方案变更。例如,您可能希望以一种“自上而下”的方式来应用方案变更,即首先将方案变更应用于根复本,然后向下传播。