Skip To Content

マップ サービスのスキーマの変更

データセットのスキーマは、そのデータセットに含まれるフィールドとその定義です。 これらを変更すると、データセットのスキーマが変更されます。 マップ サービス (マップ イメージ レイヤー) は、デフォルトでスキーマ ロックを使用して、サービス動作中に参照されるデータセットのスキーマが変更されることを防ぎます。 スキーマをロックすることで、マップ サービスのユーザーがレイヤーやフィールドの不足、クエリの失敗、サービスの中断などの予期しない動作に見舞われずに済みます。

場合によっては、マップ サービスとして公開したデータセットのスキーマを変更したくなることもあります。 たとえば、場合により、新しいフィールドをフィーチャクラスに追加する、フィーチャクラスのフィールドに適用されているサブタイプを変更する、公開元であるマップのレイヤーのフィールドを追加または削除する、同マップのレイヤーのドメインを変更する、同マップのレイヤーのシンボルを変更する、といった作業が必要です。 こういった場合は、スキーマ変更を実施する前に、スキーマ変更を慎重に計画することが重要です。

スキーマ変更の実施

所属組織内でサービス停止時間を計画して、スキーマ変更を準備、実施することをおすすめします。

スキーマを変更するには、次の手順を実行します:

  1. スキーマ変更が必要なデータセットにアクセスするサービスを特定します。

    あるサービスにより使用されるデータセットを特定するには、ArcGIS Server Manager で個別サービスのサービス ワークスペースを開くか、ArcGIS Server サイト管理者として、ArcGIS Server 管理者 API でサービス マニフェスト操作を実行します。

  2. ArcGIS Server Manager にサイン インします。
  3. 影響を受ける各サービスを停止します。
  4. スキーマ変更またはソース データの変更を実施します。
  5. ArcGIS Server Managerサービスを開始します。

サービスを開始したら、ジオデータベースまたはデータベースにおけるフィールドのデータタイプの変更、サブタイプのフィールドの有効化、フィールドへのサブタイプの適用、フィールドへのドメインの追加、既存ドメインの変更、属性ルールの変更など、既存のフィールド定義を変更したスキーマ変更がサービスに反映されます。

マップ レベルの変更とマップサービス

マップまたはマップ レイヤーの変更をマップ サービスに反映するには、マップ サービスを上書きする必要があります。

マップ レベルの変更とは、マップまたはマップ内のレイヤー設定の変更をいいます。 このような変更の例として、以下が挙げられます。

  • トポロジー レイヤーや関係クラスなどのレイヤーの追加または削除
  • マップ レイヤー内のフィールド エイリアスの変更またはマップ レイヤーのエイリアスの変更
  • レイヤーのデフォルトのシンボル、属性ベースの透過表示、ラベリング プロパティの変更
  • 縮尺依存のレンダリングの適用
  • 編集テンプレートの定義または変更 (フィーチャ アクセスが有効になったマップ サービスに適用されます)
  • ソースがクエリ レイヤーの場合、クエリ レイヤーの定義を変更

マップ サービスのスキーマ ロック設定の変更

厳格なサービス レベル契約 (SLA) に従って運営されている一部の組織では、マップ サービスをアクセス可能な状態に保ちながらスキーマ変更を実施する必要があります。 マップ サービスが動作しない時間を最小限に抑えるために、マップ サービスのスキーマ ロックを無効にできます。これにより、マップ サービスを停止せずに、参照されるデータセットのスキーマを変更できます。

注意:

共有インスタンスのスキーマ ロック無効化の詳細については、「サービス インスタンス設定の構成」をご参照ください。

スキーマ ロックを無効にする前に、以下を考慮してください。

  • スキーマ ロックを無効にしたら、サービスがアイドル状態のときにのみスキーマを更新することをおすすめします。 サービスに負荷がかかっているときにスキーマを更新すると、マップ サービスのユーザーがレイヤーやフィールドの不足、クエリーの失敗、サービスの中断といった予期しない動作に見舞われる場合があります。
  • スキーマ ロック設定を変更するには、サービスを再起動する必要があります。 また、サービスのスキーマ ロックを無効にした場合に変更を反映するには、既存フィールドの定義を変更するスキーマ変更が完了してからマップ サービスを再起動します。

マップ サービスの実行中にスキーマを編集できるようにするには、次の手順を実行します。

  1. スキーマ変更が必要なデータセットにアクセスするサービスを特定します。

    あるサービスにより使用されるデータセットを特定するには、ArcGIS Server Manager で個別サービスのサービス ワークスペースを開くか、ArcGIS Server サイト管理者として、ArcGIS Server 管理者 API でサービス マニフェスト操作を実行します。

  2. ArcGIS Server Manager にサイン インします。
  3. マップ サービスが使用中ではないことを確認します。

    サービスがアイドル状態かどうかを確認するには、ArcGIS Server Manager で該当のマップ サービスを探して、[使用中のインスタンス] の値がゼロになっているか確認します。

  4. [サービス] > [サービスの管理] の順にクリックします。
  5. マップ サービスを探して、[編集] をクリックします。

    注意:

    リストにマップ サービスが見当たらない場合は、サイト (ルート) フォルダー内のサブフォルダーに入っていることがあります。

  6. [パラメーター] をクリックします。
  7. [データベース スキーマのロック] チェックボックスをオフにします。
  8. [保存して再起動] をクリックします。

    マップ サービスは、参照先のデータセットに対するスキーマ ロックを保持しません。

    マップ サービス動作中にスキーマ変更を実施できるようになりました。

  9. マップ サービスに変更を反映するには、サービスを停止してから開始します。
注意:

マップ サービスのスキーマ ロックを無効化すると、そのサービスのスキーマ ロックのみ防止されます。 ArcGIS のその他のアプリケーションとサービスおよびサードパーティーのアプリケーションは、引き続きスキーマに対する排他ロックを取得できます。 マップ サービスのスキーマ ロックを無効化した後でデータセットのスキーマを更新できない場合は、「エンタープライズ ジオデータベースのロック」のトピックをご参照ください。

スキーマ ロックの再有効化

サービス動作中のスキーマ変更を防止するには、以下の手順を実行します:

  1. [サービス] > [サービスの管理] の順にクリックします。
  2. マップ サービスを探して、[編集] をクリックします。

    注意:
    リストにマップ サービスが見当たらない場合は、サイト (ルート) フォルダー内のサブフォルダーに入っていることがあります。

  3. [パラメーター] をクリックします。
  4. [データベース スキーマのロック] チェックボックスをオンにします。
  5. [保存して再起動] をクリックします。

マップ サービスで、サービス動作中に参照対象のデータセットのスキーマが変更できなくなりました。