数据集的模式是该数据集中包含的字段及其定义。 当这些更改时,数据集的模式也会更改。 地图服务(地图图像图层)默认使用模式锁定,以防止在服务运行时修改引用数据集的模式。 锁定模式可防止地图服务的用户遇到意外行为,例如丢失图层和字段、查询失败或服务不可用。
在某些情况下,您需要更改已发布为地图服务的数据集的模式。 例如,您可能需要向要素类添加新字段、更改应用于要素类字段的子类型、添加或删除字段、修改域或更改地图中图层的符号系统。 在这些情况下,在实施模式更改之前仔细规划模式更改非常重要。
执行模式变更
建议您在组织中计划服务停机时准备并执行模式更改。
请执行以下步骤更改模式。
- 确定访问需要模式更改的数据集的服务。
要识别服务使用的数据集,请在 ArcGIS Server Manager 中打开各个服务的服务工作空间,或者作为 ArcGIS Server 站点管理员,在 ArcGIS Server Administrator REST API 中运行服务清单操作。
- 登录到 ArcGIS Server Manager。
- 停止每个受影响的服务。
- 执行模式变更或源数据变更。
- 在 ArcGIS Server Manager 中启动服务。
服务启动后,它将获取更改现有字段定义的模式更改,例如对地理数据库或数据库中字段数据类型的更改、为子类型启用的字段、应用于字段的子类型、添加到字段的域、已更改的域或已更改的属性规则。
注:
如果您在源表中添加或删除了字段,则必须覆盖地图服务。
地图级别变更和地图服务
要使地图或地图图层更改反映在地图服务中,您必须覆盖地图服务。
地图级别更改是对地图或地图内图层设置的更改。 这些类型的变更包括但不限于以下内容:
- 添加或删除图层,包括拓扑图层或关系类
- 修改地图图层中的字段别名或修改地图图层别名
- 修改图层的符号系统、透明度或标注属性
- 应用按比例渲染
- 定义或更改编辑模板(适用于启用要素访问的地图服务)
- 如果源是查询图层,则更改查询图层定义
修改地图服务模式锁定设置
对于一些在严格的服务级别协议 (SLA) 下运营的组织,必须进行模式更改,同时仍允许地图服务保持可访问性。 要最大限度地减少地图服务不运行的时间,您可以禁用地图服务的模式锁定,这样您就可以在不停止地图服务的情况下修改引用数据集的模式。
注:
有关禁用共享实例模式锁定的信息,请参阅配置服务实例设置。
在禁用模式锁定之前请考虑以下事项:
- 禁用模式锁定时,建议您仅在服务空闲时更新模式。 如果在服务具有负载时更新模式,地图服务的用户可能会遇到意外行为,例如丢失图层和字段、查询失败以及服务不可用。
- 更改模式锁定设置需要您重新启动服务。 此外,为了在禁用服务的模式锁定时反映更改,您必须在更改现有字段定义的模式更改完成后重新启动地图服务,或者在添加或删除字段时覆盖地图服务。
完成以下步骤以允许在地图服务运行时进行模式编辑:
- 确定访问需要模式更改的数据集的服务。
要识别服务使用的数据集,请在 ArcGIS Server Manager 中打开各个服务的服务工作空间,或者作为 ArcGIS Server 站点管理员,在 ArcGIS Server Administrator REST API 中运行服务清单操作。
- 登录到 ArcGIS Server Manager。
- 确认地图服务未使用。
要确定服务是否空闲,请在 ArcGIS Server Manager 中找到感兴趣的地图服务并验证 Instances in use 值是否为零。
- 单击服务 > 管理服务。
- 找到地图服务并单击编辑。
注:
如果地图服务未显示在列表中,那么其可能位于站点(根)文件夹下的某一子文件夹内。 - 单击参数。
- 取消选中锁定数据库模式。
- 单击保存并重新启动。
地图服务不会对其引用的数据集持有模式锁。
现在可以在地图服务运行时进行模式更改。
- 要使地图服务反映更改,请执行以下操作之一:
注:
禁用地图服务的模式锁定只会阻止来自该服务的模式锁。 其他 ArcGIS 应用程序和服务以及第三方应用程序仍然可以获得模式上的独占锁。 如果在禁用地图服务的模式锁定后无法更新数据集上的模式,请参阅企业级地理数据库锁定主题。
重新启用模式锁定
要防止在服务运行时进行模式更改,请按照以下步骤操作:
- 单击服务 > 管理服务。
- 找到地图服务并单击编辑。
注:
如果地图服务未显示在列表中,那么其可能位于站点(根)文件夹下的某一子文件夹内。 - 单击参数。
- 选中锁定数据库模式。
- 单击保存并重新启动。
地图服务将不再允许在服务运行时修改引用数据集的模式。