复本方案变更

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

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

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

复本方案工具

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

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

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

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

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

注:

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

有效方案变更

下面列出了方案变更及其是否可以应用于相关复本:

添加更改

字段

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

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

属性域

将同步新属性域。

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

表/要素类

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

从复本中移除数据集

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

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

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

保留方案差异

可以选择允许复本独立于彼此进行方案变更。 地理数据库复制允许复本之间存在大多数方案差异,从而使数据同步过程在大部分情况下能够继续工作。

如果将方案变更应用于一个复本而不应用于另一个复本,则预期会出现以下问题:

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

最佳做法

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

  1. 锁定系统 - 确保使用系统的人员以相应的权限进行工作。 在某些情况下,可能需要编写一些用于阻止某些特定类型的未计划方案变更(如添加或删除列)的应用程序。
  2. 应用定期方案比较 - 由于复制是一种容错操作,因此方案变更很可能不会中断同步进程。 一种好的做法是定期运行方案比较以确保不会应用未计划的方案变更。
  3. 在完成需要方案变更的维护任务之前,不要进行同步。
  4. 在整个系统中应用方案变更 - 如果需要应用方案变更,则最好在系统范围上以一种有组织的方式来应用方案变更。 例如,您可能希望以一种“自上而下”的方式来应用方案变更,即首先将方案变更应用于根复本,然后向下传播。