在 Standard 或 Advanced 许可等级下可用。
离线同步是在离线环境中手动同步复本以传输数据的过程。 这一手动交换消息的过程通过将消息从一个复本导出到文件,然后将消息从文件导入到相关复本来实现。
注:
通过在复本对之间交换包含消息的文件,可以执行离线复制和同步的所有功能。 这些消息可用于执行多个任务,并且可以使用文件地理数据库 (.gdb) 格式或 XML 文件 (.xml) 格式进行交换:
- 复本创建(.gdb 或 .xml)
- 数据变更(同步)消息(.gdb 或 .xml)
- 确认消息(.xml)
在离线环境中,.gdb 或 .xml 文件可以在外部存储设备(例如,USB 驱动器、SD 和内存卡、外部硬盘驱动器以及 CD 或 DVD)等媒介中传输,并通过分发代理(例如,电子邮件、私人快递或包裹快递服务)发送。
在任何时候,复本可以是数据发送方,也可以是数据接收方。 数据发送方将数据变更消息导出到增量文件,其中包含要应用到相关复本的更改。 数据接收方导入数据变更消息,并将确认消息导出到确认文件以确认接收的内容。 通过查看管理复本窗格中副本卡片上的副本状态,可以确定复本是数据发送方还是数据接收方。 有关管理复本窗格的概述,请参阅访问“管理复本”窗格。
离线同步工作流
对于离线环境中的复本,可通过在复本之间手动交换消息的过程来实现同步。 这一手动交换消息的过程通过组合使用多个地理处理工具完成,并遵循基本的离线同步工作流模式。下方内容将对此进行描述和说明。
- 已完成编辑。
编辑已完成并保存在地理数据库(地理数据库 1)中。
- 从数据发送方导出数据更改。
在此工作流示例中,橙色三角形也成为增量,用于表示数据变更或差异。
- 数据接收方导入数据变更消息。
数据接收方使用导入消息地理处理工具将以文件地理数据库 (.gdb) 或 XML 文件 (.xml) 格式存储的数据变更消息文件 导入数据接收方复本(地理数据库 2)。
有关使用此工具的详细信息,请参阅导入数据变更消息。
导出数据变更会根据相关复本应用数据变更,同时更新复本元数据。 - 导出确认消息。
数据接收方导入数据变更消息后,数据接收方将使用导出确认消息地理处理工具将确认消息发送回数据发送方(地理数据库 1)。
注:
由于数据发送方不在与数据接收方连接的环境中,因此数据发送方不知道数据改变更已由数据接收方接收并导入。 因此,数据接收方尽可能频繁地导出和发送确认消息是十分重要的。 如果未收到确认消息,数据发送方默认将重新发送变更,并保留重新发送变更所需的信息,直到收到更改已被相关复本接收的确认消息。 这会导致数据发送方地理数据库变得很大,后续的数据变更消息也会变大。
理想的做法(虽然并非必需)是数据接收方在接收到每个数据变更消息后发送确认消息。 还需要注意的是,一条确认消息将确认所有数据变更消息。 例如,如果复本接收到三条数据变更消息并分别导入,则可以发送一条确认消息以确认全部三条消息。
有关使用此工具的详细信息,请参阅导出确认消息。
- 导入确认消息。
数据发送方使用导入消息地理处理工具导入确认 XML 消息并更新数据发送方复本的元数据(地理数据库 1),以了解下一次导出中要包含哪些变更。
有关使用此工具的详细信息,请参阅导入数据变更消息。
提示:
使用复本属性对话框的高级选项卡中的生成信息确定是否已将消息导出和导入到相关复本。
到目前为止,本主题已经描述了基本的离线同步工作流模式,在此模式中,将在父复本和子复本之间来回发送消息。 如果您继续使用此模式,系统将高效运行,甚至在消息丢失时自动更正。
但是,您可能还希望考虑下方各节中描述的特定消息交换方案。
切换角色
在双向复本中,数据发送方和数据接收方可以切换角色。 当数据发送方发送包含角色切换指令的数据变更消息时,数据发送方即发起角色切换。 数据接收方导入消息后,角色随即切换,系统即可以相反方向发送数据。
但是,在单向复本中,您无法切换角色,因为编辑和数据变更仅可单方向流通。 对于“父-子”单向复本,父复本始终是数据发送方。 对于“子-父”单向复本,子复本始终是数据接收方。 在任何一种情况下,数据接收方发送确认消息都十分重要。 对于检出复本,子复本始终是数据发送方,且无需确认消息。 有关多种类型的复本的详细信息,请参阅复制类型。
以下步骤和图表显示父复本发送数据变更消息,并指示将相关复本的角色切换为数据发送方角色。
- 确保已连接到双向复本。
- 为了切换角色,数据发送方使用导出数据变更消息地理处理工具导出数据变更消息,同时选中消息导出后切换为接收方选项。
当父复本导出包含这些切换角色指令的数据变更消息时,将变为数据接收方。
注:
使用导出数据变更消息工具切换角色时,可以选中一个附加选项,即不包含任何数据变更消息,这对于在不发送任何数据的情况下发送切换角色消息非常有用。 有关此选项的详细信息,请参阅切换角色但不发送数据变更。
- 数据接收方使用导入消息地理处理工具导入包含切换角色指令的数据变更消息文件。
导入完成后,即变为数据发送方。
切换角色而不发送数据变更
可以发送包含切换角色指令但不包含任何数据变更的数据变更消息。 您可能在以下情况需要此操作:作为数据发送方,您需要从数据接收方获取数据变更,但是不准备发送数据变更。 有关发送切换角色消息但不发送数据的详细信息,请参阅导出数据变更消息。
切换角色之后确认变更
在双向复本中切换角色后,新的数据发送方可使用两个选项来确认切换角色的消息。
重新导出未确认的数据变更消息
系统允许复本重新发送未确认的数据变更。 您可能在以下情况需要此操作:作为数据发送方,数据变更消息可能未被数据接收方导入、在传输过程中丢失或需要重新发送。 另一个选项是等待下次发送数据变更,因为默认情况下,将包括新的变更和所有未确认的变更。
下图显示了需要重新导出未确认的数据变更消息的情况。 在这里,父复本发送数据变更消息,并从发送方切换为接收方。 但是,消息丢失,使得父复本和子复本均为数据接收方。 为了解决此问题,刚刚进行角色切换的数据接收方使用重新导出未确认的消息地理处理工具。 在这种情况下,它允许父复本将未确认的数据变更消息与切换角色消息一起重新发送到子复本。
绕过确认消息文件
默认情况下,发送数据变更时会发送所有新数据变更以及未确认的数据变更。 新变更是指上一次导出数据变更消息之后对复本版本执行的任何插入、更新和删除。 未确认的数据变更包括之前导出的、尚未收到确认的变更。 如果发送了多条数据变更消息,但均未收到确认,则数据变更文件会变得很大。
对于数据接收方而言,最佳解决方案是发送确认消息文件。 然而,由于通信系统不同,此方法未必始终可行。 例如,如果复本已离线且需要用于交换文件的传输介质以发送确认文件,您可能更倾向于向管理数据发送方复本的人员发送电子邮件来说明已收到并导入数据变更。
但请注意,绕过确认消息文件将会增加同步管理的复杂性。
- 只有导入确认消息,系统才会删除重新发送副本变更所需的系统版本。 随着时间的推移,未删除的系统版本会妨碍压缩,导致发送方的地理数据库变得很大并可能降低地理数据库的性能。 因此,至少定期使用确认消息仍然很重要。
- 绕过确认消息文件对于管理数据发送方复本和管理数据接收方的人员来说,可能需要进行更多手动干预。
可使用管理复本窗格的地理数据库复本选项卡中的复本卡片确定复本发送了哪些变更以及收到了哪些变更。 要避免非必要地发送较大的数据变更消息,数据发送方必须在下一次发送数据变更时取消选中包括未确认的数据变更选项。
- 绕过使用确认消息文件时,同步工作流更容易出错。
数据接收方只有在导入之前的变更后才能导入新的变更。 如果系统检测到之前发送的变更尚未导入,则会返回错误,并且无法导入当前的变更。 如果一次发送多条数据变更消息,则必须以正确的顺序将其导入。 如果试图以不正确的顺序导入消息,则系统会返回错误。 出现错误时,系统会提供错误消息。 但如果使用的是自动化系统,则不会向您显示这些错误。 在这种情况下,可使用复本活动日志来检测在同步期间是否发生了错误。