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. マップ サービスに変更を反映するには、以下のいずれかを行います。
    1. サービスを停止した後、開始します。
    2. フィールドを追加または削除した場合、またはマップレベルの変更を行った場合は、サービスを上書きします。
注意:

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

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

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

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

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

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

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