如果您不需要使您发布的 web 服务可访问源数据,ArcGIS Server 可在您发布时复制服务数据。数据副本放置在 ArcGIS Server 站点可访问的位置。
如果您的源数据受防火墙保护而 web 服务却不受其保护,则在发布时复制数据将十分有用。这样做还可以帮助您将内部编辑的数据集与通过 web 服务获取的数据集相分开。复制数据可确保您所发布的服务(例如地图服务)在访问其源数据集时不会产生任何问题。
若干因素会对 ArcGIS Server 是否复制数据以及复制后数据的放置位置产生影响。例如,当发布到 ArcMap 中的独立或联合 ArcGIS Server 站点时,如果您的数据源未在 ArcGIS Server 站点中注册,则会自动复制数据。副本数据位于其中一台 ArcGIS Server 计算机的文件夹中。例外情况:如果您的 ArcGIS Server 站点具有托管数据库并且您发布的是要素服务或 WFS-T 服务,则在这种情况下,数据将被复制到托管数据库。
注:
自动数据复制的引入早于托管 web 图层的引入且在 ArcGIS Pro 存在之前。因此,本主题中介绍的工作流程将涵盖从 ArcMap 发布到 ArcGIS Server 站点。
发布托管 web 图层时,始终复制数据。有关发布托管图层的信息,请参阅门户用户帮助或 ArcGIS Online 帮助。
从 ArcGIS Pro 发布时,您选择在发布时引用注册数据或复制数据。如果选择复制数据,将始终需要创建托管 web 图层;因此,本主题中介绍的工作流程并不适用。
从 ArcMap 发布到 ArcGIS Server 站点时,在复制数据之前,请检查下列方案并考虑工作流之间如何进行关联。
如果要复制的数据不需要企业级地理数据库
如果想要复制到服务器的数据不需要企业级地理数据库,请忽略准备窗口中的数据源未注册到服务器,则此数据将被复制到服务器警告 (或者将其标记为异常),然后发布服务。您的数据会自动复制到其中一台 ArcGIS Server 计算机的文件或文件地理数据库中。您无需执行进一步操作。
使用基于云的服务器时,何时使用自动数据复制
当 ArcGIS Server 站点运行在云环境(如 Amazon Web Services 或 Microsoft Azure)中而您不能或不想登录到云计算机上时,将数据复制到服务器将会非常便利。在云环境中,服务器需要拥有自己的数据副本,因为从您的本地计算机检索数据的效率很低,而且在某些情况下也无法实现。这种复制数据的方法很方便,但是,如果要发布多个使用相同数据集的服务,则会导致数据在服务器上重复性地累积。
使用本地服务器时,何时使用自动数据复制
如果您没有本地 ArcGIS Server 计算机的登录权限,自动数据复制使您可以继续成功发布服务。
如果想要发布数据集的一个快照,也可以决定以这种方法复制数据。例如,假设您有一个地理数据库,此地理数据库正由几十个编辑人员持续进行修改。每个月都要对此数据执行质量审核流程,以保证其达到您所在组织的数据完整性标准。您希望只有在确定数据符合标准的情况下才对数据进行发布。
对数据进行质量检查之后,您就可以发布数据并将其复制到服务器上。这样做能保证 Web 用户看到的是已执行质量检查的数据,同时编辑人员每天可以继续对工作地理数据库进行修改。每个月,在完成质量审核流程之后,您就可以通过覆盖该服务来重新发布服务器上的数据副本。
如果要发布的服务类型需要企业级地理数据库
如果要发布的服务类型需要企业级地理数据库,首先必须创建一个企业级地理数据库,然后将其注册为 ArcGIS Server 站点的托管数据库。发布要素或启用事务的 WFS (WFS-T) 服务时,您的 GIS 资源所引用的数据将被复制到该企业级地理数据库中。
何时使用此方案
使用此方案发布要素服务或 WFS-T 服务。由于这些服务类型明确需要企业级地理数据库,所以发布时,ArcGIS Server 将自动在托管数据库中放置一份您的数据副本。托管数据库仅可以用于要素服务或 WFS-T 服务,以及任何随这些服务类型一同发布的功能。例如,可以发布启用了 KML 功能的要素服务,但是不能只发布 KML 服务并将数据复制到托管数据库。您只能将托管数据库与独立或联合 ArcGIS Server 站点结合使用,只可以注册一个地理数据库来充当此角色,并且无法在托管数据库与数据源之间实现同步更改。
当您的 ArcGIS Server 站点运行在云环境(例如 Amazon Web Services)中时,同样可以使用此方案。例如,云服务器需要拥有自己的数据副本,因为要素服务或 WFS-T 服务从您的本地计算机检索数据的效率很低,而且在某些情况下也无法实现。在这种情况下,由于发布时数据被自动复制到托管数据库,因此,您可以不必登录到云计算机。
发布后,您和您的用户只可以使用通过要素服务或 WFS-T 服务显示的数据。如果需要更新托管数据库中的数据,您可以将要素或 WFS-T 服务添加到 ArcMap,然后使用本地编辑命令上载这些新数据。此外,您需要先覆盖服务,客户才能在 Web 上看到这些更改。
您发布的每项服务都包含其自身的托管数据库中的数据副本。如果要发布另一个使用相同源数据集的服务,则在您的托管数据库中会存在同一数据集的两份副本。
托管数据库中数据的生命周期直接由服务的生命周期控制。例如,如果删除该服务,将会一并删除其所引用的托管数据库中的数据。如果需要在删除服务前保存数据,可以使用 ArcGIS Desktop 中的工具,将企业级地理数据库数据导出到可以传输到本地计算机的文件地理数据库中。
使用此方案时,请注意以下事项:
- 必须先明确创建企业级地理数据库,才可将其注册为 ArcGIS Server 站点的托管数据库。
- 托管数据库必须是企业级地理数据库(不允许文件地理数据库)。
- 您只能将托管数据库注册到独立或联合 ArcGIS Server 站点。您无法将此联合服务器用作 ArcGIS Enterprise 门户的托管服务器。
- 每个 ArcGIS Server 站点只允许有一个托管数据库。
- ArcGIS Server 必须具有企业级地理数据库的访问权限。
- 允许注册空地理数据库。
- 要发布的要素服务或 WFS-T 服务中的数据可以来自任何位置(例如,shapefile 或文件地理数据库)。
- 删除服务会同时删除该服务的数据。
- 每当您更新数据源并希望在服务中反映更改时,您必须覆盖服务以更新托管数据库中的一个或多个数据集。
不使用此方案的情况
- 如果要发布除要素服务或 WFS-T 服务以外的服务类型。
- 如果数据位于某个企业级地理数据库中。
- 如果要发布通过 OLE DB 连接文件 (.odc) 访问的数据库表
- 如果要在发布者的计算机和托管数据库之间同步更改。
数据复制的最佳做法
大型的复制工作可能要花费几小时甚至更长的时间才能完成。在复制过程中,客户端可以继续使用您的服务器上的其他服务。
为避免复制过多的数据,最佳的做法是使数据框的全图范围保持在需要的范围以内。例如,如果您有一个覆盖全世界的数据集,但您的地图服务只需要在某个国家使用,则将数据框中的自定义全图范围设置为仅包含所关注的那个国家。有关完整说明,请参阅为数据框设置自定义全图范围。
类似地,在复制之前请检查地图服务中是否包含一些不重要的可以移除的图层。对于具有大量源数据的服务,最好选择手动将数据移动到服务器上,以避免数据重复。
每次将数据复制到服务器时,请确保 ArcGIS Server计算机或托管数据库计算机拥有足够的可用磁盘空间来接收复制的数据。如果您未将服务包含的全图范围的所有图层的大小均考虑在内,那么这个空间可能会超出您预期的大小。
复制 OLE DB 数据源
OLE DB 连接提供对多个数据源中数据的统一访问,但是属于非空间连接。如果数据来源于通过 OLE DB 连接文件 (.odc) 访问的数据库表,则 OLE DB 数据源将被复制到服务器,并转换为文件地理数据库表。
无法复制的数据集
某些类型的数据不可以作为发布过程的一部分复制到服务器。这些数据包括选择图层、自定义图层、视频图层和工具图层。
禁用数据复制
如果您是 ArcGIS Server 管理员,您希望阻止发布者在发布时自动将数据复制到服务器,可以使用 ArcGIS Server 管理员目录禁用数据复制。有关完整说明,请参阅发布至服务器时禁用自动数据复制。