データセットのスキーマは、そのデータセットに含まれるフィールドとその定義です。 これらを変更すると、データセットのスキーマが変更されます。 マップ サービス (マップ イメージ レイヤー) は、デフォルトでスキーマ ロックを使用して、サービス動作中に参照されるデータセットのスキーマが変更されることを防ぎます。 スキーマをロックすることで、マップ サービスのユーザーがレイヤーやフィールドの不足、クエリの失敗、サービスの中断などの予期しない動作に見舞われずに済みます。
場合によっては、マップ サービスとして公開したデータセットのスキーマを変更したくなることもあります。 たとえば、場合により、新しいフィールドをフィーチャクラスに追加する、フィーチャクラスのフィールドに適用されているサブタイプを変更する、公開元であるマップのレイヤーのフィールドを追加または削除する、同マップのレイヤーのドメインを変更する、同マップのレイヤーのシンボルを変更する、といった作業が必要です。 こういった場合は、スキーマ変更を実施する前に、スキーマ変更を慎重に計画することが重要です。
スキーマ変更の実施
所属組織内でサービス停止時間を計画して、スキーマ変更を準備、実施することをお勧めします。
スキーマを変更するには、以下の手順を実施します。
- スキーマ変更が必要なデータセットにアクセスするサービスを特定します。
あるサービスにより使用されるデータセットを特定するには、ArcGIS Server Manager で個別サービスのサービス ワークスペースを開くか、ArcGIS Server サイト管理者として、ArcGIS Server 管理者 API でサービス マニフェスト操作を実行します。
- ArcGIS Server Manager にサイン インします。
- 影響を受ける各サービスを停止します。
- スキーマ変更またはソース データの変更を実施します。
- ArcGIS Server Manager でサービスを開始します。
サービスを開始したら、ジオデータベースまたはデータベースにおけるフィールドのデータタイプの変更、サブタイプのフィールドの有効化、フィールドへのサブタイプの適用、フィールドへのドメインの追加、既存ドメインの変更、属性ルールの変更など、既存のフィールド定義を変更したスキーマ変更がサービスに反映されます。
注意:
ソース テーブルにフィールドを追加した場合、またはソース テーブルからフィールドを削除した場合は、マップ サービスを上書きする必要があります。
マップ レベルの変更とマップサービス
マップまたはマップ レイヤーの変更をマップ サービスに反映するには、マップ サービスを上書きする必要があります。
マップ レベルの変更とは、マップまたはマップ内のレイヤー設定の変更をいいます。 このような変更の例として、以下が挙げられます。
- トポロジ レイヤーや関係クラスなどのレイヤーの追加または削除
- マップ レイヤー内のフィールド エイリアスの変更またはマップ レイヤーのエイリアスの変更
- レイヤーのシンボル、透過表示、ラベリング プロパティの変更
- 縮尺依存のレンダリングの適用
- 編集テンプレートの定義または変更 (フィーチャ アクセスが有効になったマップ サービスに適用されます)
- ソースがクエリ レイヤーの場合、クエリ レイヤーの定義を変更
マップ サービスのスキーマ ロック設定の変更
厳格なサービス レベル契約 (SLA) に従って運営されている一部の組織では、マップ サービスをアクセス可能な状態に保ちながらスキーマ変更を実施する必要があります。 マップ サービスが動作しない時間を最小限に抑えるために、マップ サービスのスキーマ ロックを無効にできます。これにより、マップ サービスを停止せずに、参照されるデータセットのスキーマを変更できます。
スキーマ ロックを無効にする前に、以下を考慮してください。
- スキーマ ロックを無効にしたら、サービスがアイドル状態のときにのみスキーマを更新することをお勧めします。 サービスに負荷がかかっているときにスキーマを更新すると、マップ サービスのユーザーがレイヤーやフィールドの不足、クエリの失敗、サービスの中断といった予期しない動作に見舞われる場合があります。
- スキーマ ロック設定を変更するには、サービスを再起動する必要があります。 また、サービスのスキーマ ロックを無効にした場合に変更を反映するには、既存フィールドの定義を変更するスキーマ変更が完了してからマップ サービスを再起動するか、フィールドを追加または削除した場合にマップ サービスを上書きする必要があります。
- 共有インスタンス プールを使用するように構成されたマップ サービスでスキーマ ロックを無効にすることはできません。
マップ サービス動作中のスキーマ編集を許可するには、以下の手順を実施します。
- スキーマ変更が必要なデータセットにアクセスするサービスを特定します。
あるサービスにより使用されるデータセットを特定するには、ArcGIS Server Manager で個別サービスのサービス ワークスペースを開くか、ArcGIS Server サイト管理者として、ArcGIS Server 管理者 API でサービス マニフェスト操作を実行します。
- ArcGIS Server Manager にサイン インします。
- マップ サービスが使用中ではないことを確認します。
サービスがアイドル状態かどうかを確認するには、ArcGIS Server Manager で該当のマップ サービスを探して、[使用中のインスタンス] の値がゼロになっているか確認します。
- [サービス] > [サービスの管理] の順にクリックします。
- マップ サービスを探して、[編集] をクリックします。
注意:
リストにマップ サービスが見当たらない場合は、サイト (ルート) フォルダー内のサブフォルダーに入っていることがあります。 - [パラメーター] をクリックします。
- [データベース スキーマのロック] チェックボックスをオフにします。
- [保存して再起動] をクリックします。
マップ サービスは、参照先のデータセットに対するスキーマ ロックを保持しません。
マップ サービス動作中にスキーマ変更を実施できるようになりました。
- マップ サービスに変更を反映するには、以下のいずれかを行います。
注意:
マップ サービスのスキーマ ロックを無効化すると、そのサービスのスキーマ ロックのみ防止されます。 ArcGIS のその他のアプリケーションとサービスおよびサードパーティのアプリケーションは、引き続きスキーマに対する排他ロックを取得できます。 マップ サービスのスキーマ ロックを無効化した後でデータセットのスキーマを更新できない場合は、「エンタープライズ ジオデータベースのロック」のトピックをご参照ください。
スキーマ ロックの再有効化
サービス動作中のスキーマ変更を防止するには、以下の手順を実施します。
- [サービス] > [サービスの管理] の順にクリックします。
- マップ サービスを探して、[編集] をクリックします。
注意:
リストにマップ サービスが見当たらない場合は、サイト (ルート) フォルダー内のサブフォルダーに入っていることがあります。 - [パラメーター] をクリックします。
- [データベース スキーマのロック] チェックボックスをオンにします。
- [保存して再起動] をクリックします。
マップ サービスで、サービス動作中に参照対象のデータセットのスキーマが変更できなくなりました。