在 Standard 或 Advanced 许可等级下可用。
要在离线环境中同步复本,必须手动交换消息。通过将消息从一个复本导出到某个文件,然后将消息从该文件导入关系复本即可实现这一目的。在离线系统中,可将文件传输到介质(如 CD 或 DVD)上,然后通过分发代理(如私营快递、USPS 等)发送。
无论何时,一个复本不是数据发送方就是数据接收方。数据发送方会将数据变更消息导出到增量文件中,增量文件包含要应用于关系复本的变更。数据接收方将确认消息导出到确认文件来确认它所收到的内容。您可以通过在 ArcMap 的复本管理器中检查复本状态以确定复本是数据发送方还是数据接收方。有关复本管理器的详细信息,请参阅复本管理快速浏览。
数据接收方尽量经常导出确认消息很重要。如果未收到任何确认消息,数据发送方默认情况下会重新发送变更并保留重新发送变更所需的信息,直到这些变更得到确认为止。因此,数据发送方的地理数据库会变得很大,并且后续的数据变更消息也会变得很大。
数据接收方在收到每条数据变更消息后都发送一条确认消息是一种非常理想的方式,但不是必须这样做。还要特别注意的是一条确认消息可以对所有数据变更消息进行确认。例如,如果某个复本收到三条数据变更消息并对每条都进行导入,它可以发送一条确认消息来确认所有这三条消息。
下图显示父复本将变更发送到子复本,并从子复本接收确认消息。这里,父复本是数据发送方,子复本是数据接收方。
在双向复本中,数据发送方和数据接收方也可以切换角色。当数据发送方发送最后一条包含切换角色指令的数据变更消息时就会启动角色切换。数据接收方导入消息后,就会切换角色,系统即会准备好以相反方向发送数据。
下图显示了发送数据变更消息的父复本以及角色切换指令。当父复本导出消息后,它就会变成数据接收方。当子复本收到消息后,它就会变成数据发送方。随后,子复本会向父复本发送数据变更消息。
如上所述,双向复本使用数据变更和确认消息,并可以切换角色。但是,使用单向复本则无法切换角色。对于单向“父-子”复本,父复本始终为数据发送方。对于单向“子-父”复本,子复本始终为数据发送方。无论是何种情况,数据接收方发送确认消息仍然非常重要。对于检出复本,子复本始终是数据发送方,并且不需要任何确认消息。有关复本类型的详细信息,请参阅复制类型。
到目前为止,本主题介绍了消息在父复本和子复本之间来回发送的基本消息交换模式。如果继续使用此模式,系统将正常运行,甚至可以在丢失消息时执行更正。但是,您也可能要考虑以下特定的消息交换情况。
重新发送未确认的消息
系统允许复本重新发送未确认的数据变更。作为数据发送方,当知道或怀疑之前的数据变更消息已丢失且需要重新发送时,可能需要进行此操作。不过,也可以一直等到下次发送数据变更,因为默认情况下,这会包含新变更以及任何未确认的变更。
下图显示了需要重新发送未确认数据变更的情况。这里,父复本发送了数据变更消息,从发送方切换为接收方。但消息丢失了,这使父复本和子复本均成为数据接收方。要解决此问题,刚刚切换了角色的数据接收方可以使用“重新导出未确认的消息”选项。这样,它会允许父复本向子复本重新发送切换角色的消息。
切换角色之后确认变更
在双向复本中切换角色后,数据发送方可以使用导出确认消息选项,以确认切换角色的消息。或者,也可以发送一条数据变更消息,因为它会隐式地确认此消息。但是,如果不打算在近期发送数据变更消息,则应发送确认消息。
在下图中,父复本发送了一条切换角色的数据变更消息。当子复本收到此消息时,它将变成数据发送方,但由于是刚刚切换,系统仍允许它发送确认消息。
切换角色而不发送数据变更
可以发送不包含任何数据变更而只包含角色切换指令的数据变更消息。作为数据发送方,如果需要从数据接收方获取变更,但不准备发送数据变更时,可能需要进行此操作。有关发送消息以切换角色但不发送任何数据的详细信息,请参阅导出数据变更消息。
绕过确认消息文件
默认情况下,发送数据变更时会发送所有新数据变更以及未确认的数据变更。新变更是指上一次导出数据变更消息之后对复本版本执行的任何插入、更新和删除。未确认的数据变更包括先前导出的尚未收到确认的变更。如果发送了多条数据变更消息,但都未收到确认,则数据变更文件会变得很大。
解决此问题的最好办法是数据接收方发送确认消息文件。然而,由于其依赖通信系统,这个办法也未必始终可行。例如,如果复本已离线且需要配送交换文件的介质以发送确认文件,您可能会选择向管理数据发送方复本的人员发送电子邮件来说明已收到并导入数据变更。
但请注意,绕过确认消息文件将会增加同步管理的复杂性。
- 只有使用导入确认消息这种方法,系统才能删除重新发送复本变更所需的系统版本。随着时间的推移,未删除的系统版本会妨碍压缩,而使发送方的地理数据库变得很大并可能降低地理数据库的性能。因此,至少定期使用确认消息仍然很重要。
- 绕过确认消息文件对部分管理数据发送方复本和数据接收方复本的人员来说,可能需要进行更多手动干预。
可使用复本管理器来确定复本发送了哪些变更以及收到了哪些变更。要避免非必要地发送较大的数据变更消息,数据发送方必须在下一次发送数据变更时取消选中包括未确认的数据变更选项。
- 绕过使用确认消息文件时,同步工作流更容易出错。
数据接收方只有在导入先前的变更后才能导入新的变更。如果系统检测到先前发送的变更尚未导入,则会返回错误,并且无法导入当前的变更。如果一次发送多条数据变更消息,则必须以正确的顺序将它们导入。如果试图以不正确的顺序导入,则系统会返回错误。
出现错误时,系统会提供错误消息。但如果使用的是自动化系统,则不会向您显示这些错误。在这种情况下,可使用复本活动日志来检测在同步期间是否发生了错误。日志还会在适当的时候向您提供有关如何恢复的说明。