复本方案变更

在 Standard 或 Advanced 许可等级下可用。

在创建复本时,数据和方案会从父地理数据库复制到子地理数据库。 数据将要从数据集中复制的行包含在复本中。 方案包含字段、属性域、子类型和复制数据中数据集的定义。

最初,两个复本中的方案相同,但是随着时间的推移,可能向每个复本地理数据库方案应用了变更。 例如,一个复本可能需要其他字段才能完成工程,而相关复本可能需要将新域应用于现有字段。 出现这种情况时,复本地理数据库的方案将不再相同。 可以使用地理处理工具比较复本地理数据库的方案,识别差异,并针对某些类型的方案更改在两个地理数据库之间同步模式。

方案更改会影响地理数据库中的对象结构或定义,例如表和要素类。 因此,方案更改会直接作用于地理数据库中的对象,而不会局限于某个特定版本。

复本方案工具

在使用复本方案变更时会用到三个地理处理工具:

  • 导出复本方案 - 使用输入单向或双向复本方案创建复本方案文件。
  • 比较复本方案 - 生成一个 .xml 方案,用于描述复本地理数据库和相关复本地理数据库之间的方案差异。
    • 由此工具生成的方案变更文件将描述此复本地理数据需要应用哪些变更才能与关系复本地理数据库相匹配。
  • 导入复本方案 - 使用输入复本地理数据库和 .xml 文件应用复本方案差异。

可从以下位置访问方案变更工具:

  • 地理处理窗格中,可以使用搜索选项或浏览至分布式地理数据库工具箱。
  • 管理复本窗格中,可以使用管理复本菜单 菜单
    从“管理复本菜单”访问的方案变更工具
  • 目录窗格中,可以右键单击地理数据库,然后访问分布式地理数据库快捷菜单。
    从“分布式地理数据库”快捷菜单访问的方案变更工具

要将方案变更应用于相关复本地理数据库,请参阅管理地理数据库复本中的说明。

注:

修改复本方案使其与关系复本的方案相匹配是一个独立于数据同步的过程。

有效方案变更

下表列出了可以使用导入复本方案地理处理工具导入到相关复本地理数据库的方案更改类型。 表中的值表示这些方案更改是否以及如何应用到相关复本数据库。

添加更改

字段

将同步添加到表或要素类的字段。

将同步对应用于字段的属性域的更改。

属性域

将同步新属性域。

将同步对属性域定义的更改。

表或要素类

将同步添加的字段和应用于表和要素类中字段的属性域。

被删除的字段、表或要素类不会同步到相关复本地理数据库(即不会从相关复本地理数据库中移除)。

从复本中移除数据集

每个复本涉及的数据集列表存储在复本地理数据库中。 可以在复本属性对话框中查看此列表。 有关打开这些属性的说明,请参阅管理地理数据库复本

如果从复本中取消注册这些数据集之一,则会出现一条警告。 如果继续操作,该数据集将从复本数据集列表中移除。 还要注意以下几点:

  • 如果取消注册表、要素类或关系类,则无法将其重新添加至复本。
  • 如果取消注册拓扑,则无法将其重新添加至复本。 复本仍然可以实现同步;但是,不支持同步拓扑异常。

保留方案差异

地理数据库复制允许复本地理数据库之间存在某些方案差异,从而使数据同步过程在大部分情况下能够继续工作。

然而,当您仅对其中一个复本地理数据库进行方案更改时,可能会遇到以下问题:

  • 不同步的编辑内容 - 数据同步只会导入两个复本所共有的表和字段的更改。 如果对不存在于相关复本地理数据库的字段进行编辑,导入更改时该编辑将无法应用于复本地理数据库。
  • 无效值 - 违反属性域、子类型以及关系规则的变更会在同步变更时应用。
  • 数据同步错误 - 手动更改两个复本地理数据库的方案时可能发生。 例如,向表中添加字段时,确保在复本对的两个地理数据库中使用相同的字段定义。 如果存在差异(例如,一个字段在某个复本地理数据库中是字符串,但是在另一个复本地理数据库中是整型),将出现数据同步错误。
  • 不支持的变更 - 某些方案变更类型可能会导致同步失败,但进行此类变更时不会显示警告。 地理数据库复制系统无法检测到这些变更。 其中包括在数据库表中更改权限等数据库级别操作。 如果将复制数据的权限更改为只读,则从相关复本地理数据库导入更改的尝试将失败。

最佳做法

通常,建议避免方案变更。 方案变更可能导致复本不一致,而应用方案变更带来的额外任务可能增加性能成本。 然而,在某些情况下必须应用方案变更。 下面是有助于避免方案变更的最佳做法:

  • 应用定期方案比较 - 由于复制是一种容错操作,因此方案变更很可能不会中断同步进程。 一种好的做法是定期运行方案比较以确保不会应用未计划的方案变更。
  • 在完成需要方案变更的维护任务之前,不要进行同步。
  • 在整个系统中应用方案变更 - 如果需要应用方案变更,则最好在系统范围上以一种有组织的方式来应用方案变更。 例如,建议采用自上而下的流程,先在父复本地理数据库中应用更改,然后传播至子复本。